1040 Longest Symmetric String (25 分)
Given a string, you are supposed to output the length of the longest symmetric sub-string. For example, given Is PAT&TAP symmetric?
, the longest symmetric sub-string is s PAT&TAP s
, hence you must output 11
.
Input Specification:
Each input file contains one test case which gives a non-empty string of length no more than 1000.
Output Specification:
For each test case, simply print the maximum length in a line.
Sample Input:
Is PAT&TAP symmetric?
Sample Output:
11
我自己的思路很简单,a从0开始,b从末尾开始,每次判断a和b之间能否构成回文串,如果能,就保存下来长度,以便下一次比较大小
#include <iostream>
using namespace std;
int panduan(string str,int a,int b){
int panduan=1;
while(a<b){
if(str.at(a)==str.at(b)){
a++;
b--;
}
else{
panduan=0;
break;
}
}
return panduan;
}
int main()
{
string str;
getline(cin,str);
string out="";
int maxLenth=0;
int cacheA,cacheB;
for(int a=0;a<str.size()-1;a++){
for(int b=str.size()-1;b>a;b--){
if(str.at(a)==str.at(b)){
int get=panduan(str,a,b);
if(get==1){
if(b-a>maxLenth){
maxLenth=b-a;
cacheA=a;
cacheB=b;
}
}
}
}
}
cout<<cacheB-cacheA+1;
// for(int i=cacheA;i<=cacheB;i++){
// cout<<str.at(i);
// }
return 0;
}
但这题肯定是想让你用dp的, 额,我这个菜鸡还是膜拜下柳神的博客吧。地址如下