对称字符串的最大长度。
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符
串里最长的对称子字符串是“goog”,因此输出4。。
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。比如输入字符串“google”,由于该字符
串里最长的对称子字符串是“goog”,因此输出4。。
程序如下,自验证过
<pre name="code" class="cpp">bool isSym(char *start,char *end)
{
assert(start != NULL && (end != NULL));
while(start < end)
{
if(*start == *end)
{
start ++;
end --;
}
else
return 0;
}
return 1;
}
int getMaxLenSym(char * src)
{
assert(src != NULL);
char *start = src,*end = src + strlen(src) - 1;
return getMaxLenSub(start,end);
}
int getMaxLenSub(char *start, char *end)
{
assert(start != NULL && (end != NULL));
if(*start == *end)
{ if(isSym(start , end) == 1)
return end - start +1;
}
if(start < end)
{
int len1 = getMaxLenSub(start+1,end);
int len2 = getMaxLenSub(start,end-1);
return len1>len2 ? len1 : len2;
}
return 1;
}
void testIsSym()
{
char src[]="goaog";
char *start=src,*end = src + strlen(src) - 1;
cout << isSym(start,end)<<endl;
}
void testGetMaxLenSym()
{
char src[]="goaogle";
cout<<getMaxLenSym(src)<<endl;
}