输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符
串里最长的对称子字符串是“goog”,因此输出4。
我写的代码,已通过测试。
复杂度比较高。
#include<iostream>
using namespace std;
int ishuiwen(char *str,int n)//n为字符串长度
{
char *s1=str,*s2=str+n-1;//s2指向末尾
int flag=0;
while(*s1)
{
if(*s1==*s2)
{
if((s1==s2)||(s1+1==s2)){flag=1;break;}
else {s1++;s2--;}
}
else break;
}
return flag;
}
int main()
{
char str[20];
while(cin>>str)
{
char *str1=str;int max=1;
for(int i=0;i<strlen(str);i++)
{
for(int j=i+1;j<strlen(str);j++)
{
if(ishuiwen(str+i,j-i+1)==1)
{
if(j-i+1>max)max=j-i+1;
}
}
}
cout<<max<<endl;
}
return 0;
}