概念:
什么是回文串
“回文串”是一个正读和反读都一样的字符串,比如“level”或者“noon”等等就是回文串。
实现:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
|
#include <iostream> #include <cstring> #include <algorithm> using namespace std; const int INF=0x3f3f3f3f; const int maxn=1000+10; int vis[maxn][maxn]; string str; int p[maxn][maxn]; int pa(int i,int j){ if(i>=j)return 1; if(str[i]!=str[j])return 0; if(vis[i][j])return p[i][j]; vis[i][j]=1; p[i][j]=pa(i+1,j-1); return p[i][j]; } int main() {
while(getline(cin,str)){ memset(vis,0,sizeof vis); int ans=0; int len=str.length(); for(int i=0;i<len;i++){ for(int j=i;j<len;j++){ if(pa(i,j))ans=max(ans,j-i+1); } } cout<<ans<<endl; } return 0; }
|
近期评论