您的位置:首页 > 其它

pat 1040 Longest Symmetric String

2013-03-06 21:51 281 查看
题意要求最长回文串,遍历一遍,找到回文串最中间的那个字母(BAB中的A或ABBA中的第一个B),再以该字母为中心,往左右拓展,若能相等,则相加。就算样例可以过,也要测试一下其它简单的情况,如AAA, BB。

要注意的数据点有:

aaa     3  

aassaa 6

 

AC代码:

//1040 21:20
#include<stdio.h>
#include<string.h>
char str[1005];
int main()
{
//scanf("%s",str);
//freopen("C:\\Documents and Settings\\Administrator\\桌面\\input.txt","r",stdin);

gets(str);
int len=strlen(str);
int i,index=0,j;
int cnt=1,res=1;
for(i=1;i<len;i++){
if(str[i-1]==str[i+1]){
cnt=1;
index=i;
for(j=1;j<=index&&index+j<len;j++){
if(str[index-j]==str[index+j])
cnt+=2;
else
break;
}
}
if(cnt>res)
res=cnt;
if(str[i]==str[i-1]){
cnt=2;
index=i-1;
for(j=1;j<=index&&index+1+j<len;j++){
if(str[index-j]==str[index+1+j])
cnt+=2;
else
break;
}
}
if(cnt>res)
res=cnt;
}
printf("%d",res);
return 0;
}


 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: