题目: 回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。输入一个字符串Str,输出Str里最长回文子串的长度。
Input
输入Str(Str的长度 <= 1000)
Output
输出最长回文子串的长度L。
Input示例daabaacOutput示例5
构造另一个它的逆序串,再进行判断~
完整代码:
#include <stdio.h> #include <stdlib.h> #include <string.h> int main() { char s[1001],s1[1001]; scanf("%s",s); int a,b; int str=strlen(s); int i,j,sum=0,sum1=0; for(i=0; i<str; i++) s1[i]=s[str-i-1]; for(i=0; i<str; i++){ for(j=0; j<str; j++){ if(s1[i]==s[j]) { a=i; b=j; while(s1[a]==s[b] && a<str && b<str) { sum1++; a++; b++; } } if(sum<sum1 && (a+b)-sum1==str){sum=sum1; } sum1=0; } sum1=0; } printf("%d",sum); return 0; }