求最大回文子字串

2021-07-13 14:47:58 字數 1012 閱讀 5807

題目出處:

回文字串: 簡單點說就是字串反轉(reverse)後的結果還是自己。如"abcba", "abccba", 返轉後的結果是一樣的。最簡單的回文字串是空字串及長度為1的字串。

題目要求,給乙個字元, 可以假設最大長度的1000.查詢最大回文子字串。並返回乙個。

解決方法:

遍歷字串

假設當前位置就做為回文字串的中心。求出其回文字串的長度。

與已經查詢的最大長度比較,記錄兩者最大值,作為當前最大長度值。

直到最後

感想:以前寫過乙個實現,今天再看時居然沒看懂,只知道大概怎麼做的,處理的細節沒怎麼弄明白。 後面會符上**,有興趣的可以研究下

今天決定再寫乙個版本,思路一樣,可**超簡單,也更清晰。

看著原來的**,想著以前寫著肯定很糾結, 這再一次讓我明白:大道至簡。如果事情太過糾結,那肯定是**出問題了!

演算法版本:

string longestpalindrome(string s) 

int len = j-i -1;//當前回文長度

if(len > maxlen)

//判斷後面是否還有沒有必要遍歷

if(index + maxlen/2 > s.length())break;

}return s.substr(start, maxlen);

}

以前的版本

string longestpalindrome_1(string s) 

//check single = 0x01

for(int j = mid+1; j <= i; j++)

if(length2 > lastlen)

// cout<< "lastmid: " << lastmid << " lastlen:" << lastlen << endl;

return s.substr(lastmid-lastlen/2, lastlen);

}

求最大回文子串問題

catcher是mca國的情報員,他工作時發現敵國會用一些對稱的密碼進行通訊,比如像這些abba,aba,a,123321,但是他們有時會在開始或結束時加入一些無關的字元以防止別國破解。比如進行下列變化 abba 12abba,aba abakk,123321 51233214 因為截獲的串太長了,...

演算法 求解最大回文子字串

第一種方法 暴力求解,時間複雜度o n 3 兩個巢狀迴圈遍歷字串中的所有子字串,另乙個迴圈用來判斷當前子字串是否為回文。func longestpalindromicstring on3 s string string if ispalindromic true return str 第二種方法 採...

最大回文子串行 最大回文子串

最大回文子串行,例如cafgfkc,最大回文子串行cfgfc,輸出5。子串行相當於刪除某些位置上的字元後形成的序列。最大回文子串,例如cafgfkc,最大回文子串fgf,輸出3。子串相當於擷取start位到end位的子串。試過沒認真看題目,原題是求子序列,想當然以為求子串,直接高高興興用manach...