微软等数据结构+算法面试100题 中第73题
对策字符串的最大长度。
题目:输入一个字符串,输出该字符串中对称的子字符串的最大长度。
比如输入字符串“google”,由于该字符串里最长的对称子字符串是“goog”,因此输出4。
分析:可能很多人都写过判断一个字符串是不是对称的函数,这个题目可以看成是该函数的加强版。
int MaxSymmetricStr(char * str)
{
int nLen = strlen(str);
int nMaxL = 0;
for(int i=1;i<nLen-1;i++)
{
int j = i-1;
int k = i;
int nl = 0;
while(j>=0 && k<nLen)
{
if(str[j]!=str[k])
break;
nl += 2;
j--;
k++;
}
if(nl > nMaxL) nMaxL = nl;
j = i - 1;
k = i + 1;
nl = 1;
while(j>=0 && k<nLen)
{
if(str[j]!=str[k])
break;
nl += 2;
j--;
k++;
}
if(nl > nMaxL) nMaxL = nl;
}
return nMaxL;
}