題目:輸入乙個字串,輸出該字串中對稱的子字串的最大長度。
比如輸入字串
「google」
,由於該字串裡最長的對稱子字串是
「goog」
,因此輸出4。
方法:
1. 值得注意的是,回文的2種形式,aba, abba;
1.對於aba的形式, 從字串中的每乙個位置i,像兩邊擴充套件一位如果a[i-1]=a[i+1],那麼繼續擴充套件,直到a[i-k]!=a[i+k]或者i-k,i+k超出了陣列的邊界。
2. 對於與abba形式,從第乙個b開始,首先判斷a[i] == a[i+1]是否為真,然後從i-1,i+1+1開始分別向兩邊擴充套件,直到a[i-k] != a[i+1+k]或者i-k,i+k+1超出了陣列的邊界。
3. 總結一下,對於每乙個位置i,向兩邊擴充套件的時候都要考慮上面2種情況。
#includeusing namespace std;
void display(char *str,int from,int to)//輸出from和to位置之間的字串
cout<=0&& (i+1+k)max?lena:max;
}//判斷是否是aba型別的回文
int k=1;
while((i-k)>=0&& (i+k)<(len-1) && str[i-k]==str[i+k])
k++;
k--;
couti++;
}returnmax;
}int main()
{ char*str="daaccacdaaaddf";
cout<
對稱子字串的最大長度
題目 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出4。方法 1.值得注意的是,回文的2種形式,aba,abba 1.對於aba的形式,從字串中的每乙個位置i,像兩邊擴充套件一位如果a i 1 a i 1 那麼繼續擴充...
對稱子字串的最大長度
題目 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出4。author administrator public class main 判斷字串是否為對稱的,首位同時進行比較,時間複雜度為o n 是從兩端向中間靠齊進行的...
對稱子字串的最大長度
對稱子字串的最大長度 題目 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出 4。分析 可能很多人都寫過判斷乙個字串是不是對稱的函式,這個題目可以看成是該函式的 加強版。對稱子字串的最大長度 題目 輸入乙個字串,輸出該字...