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
题目大意:求出给定字符串中最大的回文子串长度
思路:判断给定字符串中哪些子串是回文串,如果是回文串的话就接着计算这个回文串的长度,取最大的回文子串的长度并输出
AC代码
#include <iostream>
#include <algorithm>
using namespace std;
int main() {
string s;
int Max = -1;
getline(cin, s);
for (int i = 0; i < s.length(); i++) {
for (int j = s.length()-1; j >= i; j--) {
string ss, sss;
sss = ss = s.substr(i, j - i + 1);
reverse(ss.begin(), ss.end());
if(ss == sss) {
if(Max < j - i + 1) {
Max = j - i + 1;
}
}
}
}
cout << Max;
return 0;
}
更多PAT甲级题目:请访问PAT甲级刷题之路--题目索引+知识点分析(正在进行),感谢支持!