这道题的题意是,给你一个字符串,你可以把它的一个子串替换成一个字符,使它成为一个回文串,问你替换可使它成为回文串的最大长度是多少。
这道题比赛时没看,赛后也没想出来要怎么搞,怎么想都好像会tle,看了Baoge的码后豁然开朗。
就是只要一碰到相同子串就替换就好啦= =
#include<iostream>
#include<algorithm>
#include<cstdio>
#include<algorithm>
#include<string>
#include<cstring>
#define maxn 50010
using namespace std;
string str1,str2,str3;
int main()
{
int n,ans;
cin>>n;
for(int i=1; i<=n; i++)
{
ans=0;
str2="";
str3="";
cin>>str1;
int len=str1.length();
for(int j=0; j<(len>>1); j++)
{
str2=str2+str1[j];
str3=str1[len-j-1]+str3;
//cout<<str2<<endl;
//cout<<str3<<endl;
if(str2==str3)
{
ans+=2;
str2=str3="";
}
}
if(str2!=""&&len%2==0) ans++;
if(len%2) ans++;
printf("Case #%d: %d\n",i,ans);
}
return 0;
}