对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入格式:
输入在一行中给出长度不超过1000的非空字符串。
输出格式:
在一行中输出最长对称子串的长度。
样例:">输入样例:
Is PAT&TAP symmetric?
输出样例:
11
补充样例(测试点3,5)
l
1
#include<stdio.h>
#include<string.h>
int main(){
char s[1010];
gets(s);
int max=0;
int str=strlen(s);
for(int i=0;i<str;i++){
for(int k=str-1;k>=i;k--){ //从字符串的最后一位开始寻找与前面匹配的字符
if(s[i]==s[k]){ //找到后进入循环,开始寻找最长对称字串
int w=0,j=0;
while(1){
if(s[i+j]==s[k-j]){
w++;
j++;
}
else{
break;
}
if(i+j>str || k-j<0) //如果长度超出原本字符串的长度,结束循环
break;
}
if(w>max){ //本次字符串的长度大于上次的,更新max的值
max=w;
}}
}
}
printf("%d\n",max);
return 0;
}