求串中最长对称字串。字串可能是奇数长度的例如s PAT&TAP s
,当然也有可能是偶数长度的例如s PATTAP s
,这两种情况分开统计即可。
#include<bits/stdc++.h>
using namespace std;
int main()
{
string s;
getline(cin,s);
int ls = s.length();
int l,r,ans = 0;
//偶数对称串
for(int i=0;s[i];i++){
l = i;r=i+1;
int cnt=0;
while(l>=0&&r<ls){
if(s[l]==s[r]) {
l--;r++;
cnt+=2;
} else break;
}
ans = max(ans,cnt);
}
//奇数对称串
for(int i=0;s[i];i++){
l=i-1;r=i+1;
int cnt=1;
while(l>=0&&r<ls){
if(s[l] == s[r]) {
l--;r++;
cnt+=2;
} else break;
}
ans = max(ans,cnt);
}
cout<<ans<<endl;
return 0;
}