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 <iostream> #include <algorithm> #include <cstdio> #include <cstring> #include <map> using namespace std; char s[1001]; int len,c = 1; int counts(int a,int b) { int i; for(i = 0;a - i >= 0 && b + i < len;i ++) { if(s[a - i] != s[b + i])break; } return i * 2; } int main() { gets(s); len = strlen(s); for(int i = 0;i < len;i ++) { if(i && s[i] == s[i - 1]) { c = max(c,counts(i - 1,i)); } if(i && i + 1 < len && s[i - 1] == s[i + 1]) { c = max(c,counts(i - 1,i + 1) + 1); } } cout<<c; }