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 是從兩端向中間靠齊進行的...