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
题意:
输入一个字符串,求该字符串中最长对称子串的长度。
题解:
穷举搜索,既要考虑 baab这种偶数类型的,也要考虑abcba这种技术类型的。
AC代码:
#include<iostream>
#include<algorithm>
#include<vector>
#include<queue>
#include<map>
#include<string>
#include<cstring>
using namespace std;
string a;
int main(){
getline(cin,a);
int len=a.length();
int mx=;
//先偶数
int r=,l=;
int k;
for(r=;r<len;r++)
{
l=r+;
k=;
int rr=r;
int ll=l;
while(rr>=&&ll<len&&a[rr]==a[ll]){
k+=;
rr--;ll++;
}
mx=max(k,mx);
}
//再奇数
for(r=;r<len;r++)
{
l=r+;
k=;
int rr=r;
int ll=l;
while(rr>=&&ll<len&&a[rr]==a[ll]){
k+=;
rr--;ll++;
}
mx=max(k,mx);
}
cout<<mx<<endl;
return ;
}