微軟等數據結構+算法面試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;
}