1040. Longest Symmetric String (25)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
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
https://www.patest.cn/contests/pat-a-practise/1040
思路:
循环一遍分别判断单数、双数的情况即可
CODE:
#include<iostream>
#include<cstring>
#include<string>
#include<cstdio>
using namespace std;
int main()
{
string str;
getline(cin,str);
int ma=1;
for (int i=0;i<str.length()-1;i++)
{
if (str[i]==str[i+1])
{
int t=0;
while (i-t>=0&&i+t+1<str.length())
{
if (str[i-t]!=str[i+1+t]) break;
t++;
}
ma=max(2*t,ma);
}
int tt=0;
while (i-1-tt>=0 && i+tt+1<str.length())
{
if (str[i-1-tt]!=str[i+1+tt]) break;
tt++;
}
ma=max(ma,1+tt*2);
}
cout<<ma<<endl;
return 0;
}