對稱字符串的最大長度的一個解法

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章