# 1040 Longest Symmetric String

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<string>
using namespace std;
int main(){
for(string str;getline(cin,str);){
int max_length = 1;
for(int i = 0; i < str.length();i++){
int length1 = 1;
int length2 = 1;
//判断长度为偶数的情况
int index_1 = i;
int index_2 = i+1;
if(index_1 < 0 || index_2 >= str.length()){
continue;
}
if(str[index_1] == str[index_2]){
length1 = 2;
while(1){
index_1--;
index_2++;
if(index_1 < 0  || index_2 >= str.length()){
break;
}
if(str[index_1] == str[index_2]){
length1+=2;
}else{
break;
}
}
}
//判断长度为奇数的情况
index_1 = i-1;
index_2 = i+1;
if(index_1 < 0 || index_2 >= str.length()){
continue;
}
if(str[index_1] == str[index_2]){
length2 = 3;
while(1){
index_1--;
index_2++;
if(index_1 < 0 || index_2 >= str.length()){
break;
}
if(str[index_1] == str[index_2]){
length2+= 2;
}else{
break;
}
}
}
if(length1 > max_length){
max_length = length1;
}
if(length2 > max_length){
max_length = length2;
}
}
cout<<max_length<<endl;
}
return 0;
}

• 本文已收录于以下专栏：

举报原因： 您举报文章：1040 Longest Symmetric String 色情 政治 抄袭 广告 招聘 骂人 其他 (最多只允许输入30个字)