您的位置:首页 > 其它

PAT A1040

2016-12-20 21:54 127 查看

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


实现代码如下:

#include <cstdio>
#include <cstring>
#include <algorithm>
#include <iostream>
using namespace std;
const int maxn = 1010;
char s[maxn];
int main(){
gets(s);
int _max = 0, __max;
for(int i = 0; i < strlen(s); i++){
int jl = 0, jll = 0;
int k = i;
while(s[k - jl - 1] == s[k + jl + 1] && (k - jl - 1) >= 0 && (k + jl + 1) < strlen(s)){
jl++;
}
k = i;
while(s[k - jll] == s[k + 1 + jll] && (k - jll) >= 0 && (k + jll + 1) < strlen(s)){
jll++;
}
if(jl > jll){
__max = jl * 2 + 1;
} else {
__max = jll * 2;
}
if(jl == 0 && jll == 0){
__max = 1;
}
_max = max(_max, __max);
}
printf("%d\n", _max);
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: