求取字串最長的回文子串

2022-07-29 06:00:16 字數 843 閱讀 5718

題目:

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。

思路:1.暴力解法:對每個字元而言,將其作為子串的第乙個字元,然後從字串的後面開始遍歷,找到可以使當前起始字元為頭的回文串,對字串所有字元都進行上述的操作,即可求取最長的回文子串,但是這樣時間複雜度很高

2.動態規劃的思想:設定乙個二維dp陣列,長度是字串的長度,dp[i][j]代表的含義是字串的子陣列從索引i到索引j是否可以構成回文串。其中主要有三種情況:一是,當i==j時,直接返回true;二是,當j-i == 1時,若s.charat(i) == s.charat(j)則返回true,否則返回false;三是,返回dp[i+1][j-1] && (s.charat(i) == s.charat(j))。還需要的遍歷的時候,不是根據i,j直接來遍歷,而是要外層根據子串的長度,內層根據子串的起始索引來遍歷,否則當判斷dp[i][j]時,dp[i+1][j-1]尚未進行判斷。

**:

// 求字串中最長的回文子串

public string longestpalindrome(string s)

}int maxlength = 0,maxindex = 0;

// 最外層是子串的長度

for (int i = 1; i < s.length() + 1; i++) }}

return s.substring(maxindex,maxindex+maxlength);

}

字串 最長回文子串

最長回文子串 回文子串 即正著看和倒著看相同的子串,如 abcba yyxyy。由於此類題目為面試筆試常考題目,所以現在就來整理一下啦。1 暴力求解法 最直接的想法就是暴力求解,但是我們可以看到下面的 時間複雜度是o n 3 string findlongeststring string str 暴...

字串 最長回文子串

介紹一下幾個概念 就是從左往右和從右往左讀是一樣的。就如標語 我為人人,人人為我 子串,顧名思義,就是在原字串中的子集,就叫子串。串就是不能分割的,就是連在一起,這個要區別與子串行,子串行就是一段 一段的。列舉各個起點和終點,然後進行判斷該子串是否為回文,最後就是更新最長的回文串。列舉起點和終點 o...

字串 最長回文子串

給定乙個字串 s,找到 s 中最長的回文子串。你可以假設 s 的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 思路 用manacher class solution int max 1 int res 0 儲存最...