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
考虑两种情况,aba和aa,因为字符串长度短,暴力求解就可以,比较简单。
#include<iostream>
#include<cstring>
using namespace std;
int main() {
char str[1001];
int max=1;
cin.getline(str, 1001);
for (int i = 1; i < strlen(str); i++) {
for (int j = 1; j < strlen(str); j++) {
if (i - j < 0 || i + j > strlen(str)) break;
if (str[i - j] == str[i + j]) {
if (j * 2 + 1 > max) max = j * 2 + 1;
}
else break;
}
}
for (int i = 1; i < strlen(str); i++) {
for (int j = 0; j < strlen(str); j++) {
if (i-j-1 < 0 || i + j > strlen(str)) break;
if (str[i - j-1] == str[i + j]) {
if (j * 2 +2 > max) max = j * 2 + 2;
}
else break;
}
}
cout << max;
return 0;
}
欢迎指导和交流!