题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <stdio.h>
#include <string.h>
#include <ctype.h>
/*
*整体来说分两种情况:奇数对称和偶数对称,
*其中偶数对称又需要考虑当前元素左边对称或者右边对称两种子情况
*/
int main() {
int len=0,ret=0,tmp=0;
char input[2501]={0};
while (scanf("%s", input) != EOF) {
len=strlen(input);
if(len==1) ret=1;
else
{
for(int i=0;i<len;i++)
{
tmp=1;
int j,k;
for(j=i-1,k=i+1;j>=0&&k<=len;j--,k++)
{
if(input[j]==input[k])
{
tmp+=2;
}
else {
break;
}
}
ret=tmp>ret?tmp:ret;
}
for(int i=0;i<len;i++)
{
tmp=1;
if(i-1>=0&&input[i-1]==input[i])
{
tmp=2;
int j,k;
for(j=i-2,k=i+1;j>=0&&k<=len;j--,k++)
{
if(input[j]==input[k])
{
tmp+=2;
}
else {
break;
}
}
ret=tmp>ret?tmp:ret;
}
else if(i+1<=len&&input[i+1]==input[i])
{
tmp=2;
int j,k;
for(j=i-1,k=i+2;j>=0&&k<=len;j--,k++)
{
if(input[j]==input[k])
{
tmp+=2;
}
else {
break;
}
}
ret=tmp>ret?tmp:ret;
}
}
}
}
printf("%d\n",ret);
return 0;
}

查看18道真题和解析