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
粗暴法:一个一个枚举字串,也可以用马拉车算法实现o(n)级别,这里不做阐述
#define _CRT_SECURE_NO_WARNINGS
#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main() {
#ifdef _DEBUG
freopen("data.txt", "r+", stdin);
#endif // _DEBUG
int Max = -1,strLen;
string str; getline(cin, str);
for (int i = 0; i < str.size(); ++i) {
for (int j = str.size() - 1; j >= i && j - i + 1 > Max; --j) {
string tmp = str.substr(i, j - i + 1);
string ReverseStr = tmp;
reverse(ReverseStr.begin(), ReverseStr.end());
if (tmp == ReverseStr) Max = j - i + 1;
}
}
cout << Max;
return 0;
}