對稱子字串的最大長度

2021-06-08 18:20:08 字數 799 閱讀 1704

題目:輸入乙個字串,輸出該字串中對稱的子字串的最大長度。

比如輸入字串

「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。分析 可能很多人都寫過判斷乙個字串是不是對稱的函式,這個題目可以看成是該函式的 加強版。對稱子字串的最大長度 題目 輸入乙個字串,輸出該字...