1040 Longest Symmetric String

来源:互联网 发布:淘宝保证金计划5000元 编辑:程序博客网 时间:2024/06/18 08:56

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


0 0
原创粉丝点击