#include<cstdio>
#include<algorithm>
#include<cstring>
using namespace std;
const int n=1005;
int dp[n][n];
char s[n];
int main(){
gets(s);
int len=strlen(s),ans=1;
fill(dp[0],dp[0]+n*n,0);
for(int i=0;i<len;i++){
dp[i][i]=1;
if(i<len-1){
if(s[i]==s[i+1]){
dp[i][i+1]=1;
ans=2;
}
}
} //初始化单个字符回文值,以及相邻的值!
for(int l=3;l<=len;l++){ //品味这一枚举方法!!!
for(int i=0;i+l-1<len;i++){// 初始化决定了枚举方法!----巧妙!
int j=i+l-1;
if(s[i]==s[j]&&dp[i+1][j-1]==1){
dp[i][j]=1;
ans=l;
}
}
}
printf("%d\n",ans);
return 0;
}
最长回文子串
最新推荐文章于 2020-05-04 17:11:51 发布