题解 | #密码截取#
密码截取
https://www.nowcoder.com/practice/3cd4621963e8454594f00199f4536bb1
#include <stdio.h>
#include <string.h>
char str[2501];
int main() {
gets(str);
int len=strlen(str);
int max=0;
for(int i=0;i<len;i++)
{
int left=i,right=i+1;
while(str[left]==str[right]&&right<len&&left>=0)
{
left--;
right++;
}
max=max>(right-left-1)?max:(right-left-1);
left=i-1;
right=i+1;
while(str[left]==str[right]&&right<len&&left>=0)
{
left--;
right++;
}
max=max>(right-left-1)?max:(right-left-1);
}
printf("%d",max);
return 0;
}
此题其实就是为了找出最长回文子串,需要分为两种情况:
(1)子串长度为奇数
(2)子串长度为偶数
使用的方法为中间开花
需要注意的是右指针的值只要小于len即可,不用小于len-1。

海康威视公司福利 1409人发布