题目大意:就是让你找这个字符串里最长的对称序列。
题目链接:https://pintia.cn/problem-sets/1052335451183816704/problems/1052335487275802632#p-1
思路:枚举每一个对称中心,判断时候对称,由于字符串长度仅仅为1000,所以不会超时,比较简单的模拟题。
唯一注意的是这里的对称方式有两种,一种是aacaa,一种是aaccaa。
下面给出AC代码:
#include <bits/stdc++.h>
using namespace std;
const int maxn=2000;
const int INF=0x3f3f3f3f;
char s[maxn];
int main()
{
int len=0;
char ch;
while(scanf("%c",&ch)!=EOF)
{
s[len++]=ch;
}
int p1=1,p2=0;
for(int i=1;i<len-1;i++)//判断aacaa形式的对称
{
int mid=i+1,t=1;
for(int j=i-1;j>=0;j--)
{
if(s[j]==s[mid++]) t+=2;
else break;
}
p1=max(p1,t);
}
for(int i=1;i<len-1;i++)//判断aaccaa形式的对称
{
int mid=i+1,t=0;
for(int j=i;j>=0;j--)
{
if(s[j]==s[mid++]) t+=2;
else break;
}
p2=max(p2,t);
}
printf("%d",max(p2,p1));
return 0;
}