1040 Longest Symmetric String (25)(25 point(s))
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
思路就是 一个个判断。
code
#include <iostream>
#include <string>
using namespace std;
int issymmetric(int pos,int size);
string str;
int main() {
string s;
getline(cin, s);
for (int i = 0; i < s.size(); ++i) {
str += ' ';
str += s[i];
}
str += ' ';
int max = 0;
for (int i = 0; i < str.size(); ++i) {
int x = issymmetric(i,str.size());
if (x > max) max = x;
}
cout << max << endl;
system("pause");
return 0;
}
int issymmetric(int pos,int size) {
int i = 1;
while (pos - i >= 0 && pos + i < size&&str[pos - i] == str[pos + i]) i++;
/*if (pos - i >= 0 && pos + i < size) {
for (int j = pos - i+1; j <= pos + i-1; j++) {
cout << str[j];
}
cout << endl;
}*/
return i - 1;
}