51Nod-1088-最长回文子串
51Nod-1088-最长回文子串
回文串是指aba、abba、cccbccc、aaaa这种左右对称的字符串。
输入一个字符串Str,输出Str里最长回文子串的长度。
Input
输入Str(Str的长度 <= 1000)
Output
输出最长回文子串的长度L。
Input示例
daabaac
Output示例
5
使用暴力破解,直接穷举得到answer。
#include <cstdio> #include <cstring> const int MAXN = 1000 + 10; #define max(a, b) (a)>(b)?(a):(b) int main(){ char ch[MAXN]; scanf("%s", ch); int ans = 1, len = strlen(ch); for(int i=0; i<len; ++i){ int k = 1; while( i-k>=0 && i+k<len && ch[i-k] == ch[i+k] ){ ans = max( ans, 2*k + 1 ); ++k; } if(i + 1 < len && ch[i] == ch[i+1]){ k = 1; ans = max(ans, 2); while(i-k>=0 && i+k+1<len && ch[i-k] == ch[i+1+k]){ ans = max(ans, 2*k + 2); ++k; } } } printf("%d\n", ans ); return 0; }