对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
输入样例:
Is PAT&TAP symmetric?
输出样例:
11
#include<stdio.h>
#include<string.h>
int main(){
int left=0,right=0,max=0;
char s[1111];
fgets(s,sizeof(s),stdin);//思路就是找到他最中心的对称点,然后从俩边分别展开
for(int i=0;i<strlen(s);i++){
left=i,right=i;//left和right
while(s[i]==s[right+1]&&right+1<strlen(s))//中间重复的个数
right++;//有指针右移比如字符串是baaaaab,此时left=0,right=5;
while(left>0&&right+1<strlen(s)&&s[left-1]==s[right+1]){
left--;
right++;
}
if(right-left+1>max) max=right-left+1;
}
printf("%d",max);
return 0;
}