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;
}