PAT L2-008 最长对称子串(模拟字符串)

对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定Is PAT&TAP symmetric?,最长对称子串为s PAT&TAP s,于是你应该输出11。

输入格式:

输入在一行中给出长度不超过1000的非空字符串。

输出格式:

在一行中输出最长对称子串的长度。

输入样例:

Is PAT&TAP symmetric?

输出样例:

11
题意
如上
题解
模拟,直接暴力莽,代码有解释
代码
 #include<stdio.h>
using namespace std; char a[]; int hw(int left,int right){
int mid=(left+right)/;
int ans=,k=,f=;
if( (left+right)%== )k=;
while(left<right){
if(a[left++]!=a[right--]){
f=;//不是回文串
break;
}
ans++;
}
if(f){
if(k==)
return *ans+;//偶数2*对称的个数+中间的1个
else
return *ans;//奇数2*对称的个数
}
else
return ;
} int main(){
int max=;
gets(a);
for(int i=;i<a[i];i++){
for(int j=i;j<a[j];j++){
int len=hw(i,j);
if(len>max)
max=len;
}
}
printf("%d\n",max);
return ;
}
上一篇:pat 团体赛练习题集 L2-006. 树的遍历


下一篇:团体程序设计天梯赛-练习集L2-008. 最长对称子串