對稱子字串的最大長度

2021-06-09 02:17:50 字數 1029 閱讀 8464

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

比如輸入字串

「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種情況。

[cpp]view plain

copy

#include

using

namespace

std;  

void

display(

char

*str,

intfrom,

intto)

//輸出from和to位置之間的字串

cout<}  

intfun(

char

*str)  

//判斷是否是aba型別的回文

intk=1;  

while

((i-k)>=0&& (i+k)<(len-1) && str[i-k]==str[i+k])  

k++;  

k--;  

cout<" odd:"

;  display(str,i-k,i+k);  

intlena = 2*k+1;  

max =lena>max?lena:max;  

i++;   

}  returnmax;  

}  int

main()  

對稱子字串的最大長度

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