最大对称字符串的长度

输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“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;
}

 

posted @ 2012-11-01 23:20  代码改变未来  阅读(1084)  评论(0编辑  收藏  举报