1040 Longest Symmetric String(25 分)
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
解法一:直接使用暴力求解即可,简单~
#include<iostream>
using namespace std;
int l,r,len = -1;
void fun(string str,int i,int j){
int flag = 0;
for(int k = i,z=0;k+z <= (i+j)/2;z++){//注意这里需要k=i和z=0
if(str[k+z] != str[j-z]){
flag = 1;
break;
}
}
if(flag == 0)
{
if(len < j-i)
{
l = i;
r = j;
len = j-i;
}
}
}
int main(){
string str;
getline(cin,str);
for(int i=0;i<str.length();i++)
for(int j=i;j<str.length();j++)
fun(str,i,j);
cout<<r-l+1<<endl;
return 0;
}