字串中對稱子串的最大長度

2021-06-08 23:51:32 字數 784 閱讀 4106

1. 描述

輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串「goooogle」, 由於該字串裡最長的對稱子字串是「goooog」, 因此輸出 6。

2. 思路

方法一:判斷字串的每乙個子串,若是對稱的,則求出它的長度即可。這種辦法對每乙個子串,從兩頭向中間判斷是不是子串。總的時間複雜度為o(n^3),

下面給出時間複雜度是o(n^2)的思路。

方法二:與方法一正好相反,字串中的每乙個開始,向兩邊擴充套件,此時可分為兩種情況:

(1)對稱子串長度是奇數時, 以當前字元為對稱軸向兩邊擴充套件比較

(2)對稱子串長度是偶數時,以當前字元和它右邊的字元為對稱軸向兩邊擴充套件

3. **

為了更清楚,先給出判斷乙個字串是否是對稱的小演算法:

int issymstring(char str)

下面是正式的求字串中對稱子串的長度的演算法了:

int maxsymsubstring(char str)

// for

return length;

}

測試如下:

#include #include int maxsymsubstring(char str);

int main(void)

輸出:

對稱子字串的最大長度

題目 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 google 由於該字串裡最長的對稱子字串是 goog 因此輸出4。方法 1.值得注意的是,回文的2種形式,aba,abba 1.對於aba的形式,從字串中的每乙個位置i,像兩邊擴充套件一位如果a i 1 a i 1 那麼繼續擴充...

對稱子字串的最大長度

題目 輸入乙個字串,輸出該字串中對稱的子字串的最大長度。比如輸入字串 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 是從兩端向中間靠齊進行的...