1040. Longest Symmetric String (25)
时间限制
400 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
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<cstring>
using namespace std;
int main(){
char str[1001];
int max = 1,temp, temp_index;
gets(str);//字符串中间可能有空格,因此不能用诸如scanf,cin等函数,getline可以
int len = strlen(str);
for (int i = 0; i < len; i++){
temp_index = temp = 0;
//第一种情况:对称的串的长度为偶数,如abccba
while (i - temp_index - 1 >= 0 && i + temp_index < len && str[i + temp_index] == str[i - 1 - temp_index]){
temp_index++;
temp += 2;
}
if (temp > max)
max = temp;
temp_index = 1;
temp = 1;//!!注意这里默认的字符串的起始长度不同
//第一种情况:对称的串的长度为奇数,如abcba
while (i - temp_index >= 0 && i + temp_index < len && str[i - temp_index] == str[i + temp_index]){
temp_index++;
temp += 2;
}
if (temp > max)
max = temp;
}
cout << max << endl;
return 0;
}