1040 Longest Symmetric String (25分)
思路、测点
没啥好说的,就是把字符串倒一下然后遍历寻找就行。耗时完全够。
不过有一点提示一下,回文不能用“原字符串和倒转后字符串中是否有相同的字符串”来检测。那样会使形如123456321的也被认为带有回文。测点3和5都有这一点。
然后测点4、5的答案都是“1”。
代码
#include<iostream>
#include<string>
#include<algorithm>
using namespace std;
int main()
{
string ori;
string res;
getline(cin, ori);
res = ori;
reverse(res.begin(), res.end());
int i, ii, iii, max;
bool re;
max = 1;
for (i = 0; i < ori.size(); i++)
{
for (ii = 0; ii < res.size(); ii++)
{
if (ori[i] == res[ii])
{
re = true;
for (iii = 0; i + ii + iii < ori.size(); iii++)
{
if (ori[i + iii] != res[ii + iii])
{
re = false;
break;
}
}
if(re&&iii > max)
max = iii;
}
}
}
cout << max;
return 0;
}
题目
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