本文共 1496 字,大约阅读时间需要 4 分钟。
题目链接:
题目:
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
分析:
找到一个字符串的最长回文子串,那个时候还不知道kmp,manacher,用比較搓的方法做出来的。
AC代码:
#include#include #include #include using namespace std;int main(){ //freopen("F://Temp/input.txt", "r", stdin); string str; string str_r; getline(cin,str); str_r = str; reverse(str_r.begin(),str_r.end()); //included in the //先把字符串逆序。然后比較正序和逆序中同样的部分,即为最长回文子串 int same = 0, sum = 0; for (int i = 0; i < str.size(); i++){ sum = 0; for (int j = 0, rj = i; j < str.size() - i; j++,rj ++){ if (str_r[rj] == str[j]){ sum++; if (sum > same)same = sum; } else sum = 0; } sum = 0; for (int j = 0, rj = i; j < str.size() - i; j++, rj++){ if (str_r[j] == str[rj]){ sum++; if (sum > same)same = sum; } else sum = 0; } } cout << same << endl; return 0;}
截图:
本文转自mfrbuaa博客园博客,原文链接:http://www.cnblogs.com/mfrbuaa/p/5312834.html,如需转载请自行联系原作者