对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?
,最长对称子串为s PAT&TAP s
,于是你应该输出11。
输入在一行中给出长度不超过1000的非空字符串。
在一行中输出最长对称子串的长度。
Is PAT&TAP symmetric?输出样例:
11
#include <iostream>#include <cstdio>#include <cmath>#include <queue>#include <stack>#include <map>#include <algorithm>#include <vector>#include <string>#include <cstring>#include <sstream>using namespace std;char a[1005];int len;int main(){ gets(a); len=strlen(a); int ans=1; for(int i=1;i<len-1;i++) { int p=i-1; int q=i+1; int tmp=1; while(p>=0&&q<len) { if(a[p]==a[q]) { p--; q++; tmp+=2; } else { break; } } if(tmp>ans) { ans=tmp; } } for(int i=0;i<len-1;i++) { int p=i; int q=i+1; int tmp=0; while(p>=0&&q<len) { if(a[p]==a[q]) { p--; q++; tmp+=2; } else { break; } } if(tmp>ans) { ans=tmp; } } PRintf("%d/n",ans); return 0;}
新闻热点
疑难解答