LeetCode 5 最長回文子串

2021-08-29 01:54:43 字數 916 閱讀 3616

問題描述:

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

示例 1:

輸入: "babad"

輸出: "bab"

注意: "aba"也是乙個有效答案。

示例 2:

輸入: "cbbd"

輸出: "bb"

解決方案:

中心擴充套件演算法

事實上,只需使用恆定的空間,我們就可以在 o(n^2)的時間內解決這個問題。

我們觀察到回文中心的兩側互為映象。因此,回文可以從它的中心展開,並且只有 2n −1 個這樣的中心。

你可能會問,為什麼會是 2n −1 個,而不是 n 個中心?原因在於所含字母數為偶數的回文的中心可以處於兩字母之間(例如 「abba」 的中心在兩個 『b』 之間)。

複雜度分析

**實現:

public string longestpalindrome(string s)

int start = 0, end = 0;

for(int i =0;iend-start)

}return s.substring(start,end+1);

}private int expandaroundcenter(string s,int left,int right){

int l = left,r = right;

while(l>=0&&r有精力的時候看看這個:時間複雜度和空間複雜度都是o(n)

LeetCode5最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 動態規劃來做,每個回文字串的子字串也是回文字串,即string是回文字串那麼它的string.substring 1,lenth ...

leetcode5 最長回文子串

遞推式 1 一般 s i 1 s j 1 and j i and j i len s i 1,j 1 2 初始化dp矩陣對角線的值為 true,相鄰兩個元素相等時dp i i 1 為true 初始化回文串起始位置和長度。def longestpalindrome s n len s if s ret...

leetcode(5,最長回文子串)

演算法題也刷了很多,正兒八經去仔細思考回文的題目,這還是第一道。給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 自己思考的比較簡單,最初想的就是暴力解題法,對回...