题解 | 密码截取
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <stdio.h>
int count(char* f, char* l, int n)//该函数每当遇到头尾指针目标相等时,对中间内容判断并计数
{
int num_0 = 0;//设置计数变量
for (; f <= l; f++,l--)//头尾指针同时向内移动
{
if (f == l)//当指向同一目标时循环结束,计数变量加一
{
num_0++;
break;
}
if (*f == *l)//当未指向同一目标但目标元素相同时,计数变量加二
{
num_0 +=2;
}
if (*f != *l)//一旦发现目标元素不相同说明字符串不对称,立刻停止,计数变量清零
{
num_0 = 0;
break;
}
}
if (num_0 > n)//如果新的计数变量较大则覆盖,取最大值
{
return num_0;
}
else
return n;
}
int main()
{
char input[2500] = { 0 };
gets(input);
int len = strlen(input);
char* head = input;//头指针
char* foot = input + len - 1;//尾指针
int num = 0;//计数
for (;head <= foot; head++)//尾指针从后向前遍历,每次遍历后头指针前移,共n!次
{
for (; foot >= head; foot--)
{
num = count(head, foot, num);
}
foot = input + len - 1;//尾指针每次遍历完之后初始化
}
printf("%d", num);
return 0;
}
查看15道真题和解析