5 最長回文子串

2021-10-02 03:42:03 字數 1004 閱讀 8602

解法 1: 暴力破解

暴力求解,列舉所有的子串,判斷是否為回文串,儲存最長的回文串。

時間複雜度:兩層 for 迴圈o(n²),for迴圈裡邊判斷是否為回文o(n),所以時間複雜度為 o(n³)。超時。

空間複雜度:o(1),常數個變數。

class

solution

}return

true;}

public

: string longestpalindrome

(string s)}}

return ans;}}

;

方法二:中心擴散法

class

solution

}return s.

substr

(start,leng)

;//擷取最長子串

}private

:int

length

(string s,

int l,

int r)

return r-l-1;}};

方法三:動態規劃狀態:dp[i][j]表示子字串s[i,j]是否為回文子串,為閉區間。

狀態轉移方程:dp[i][j] = (s[i] == s[j]) && dp[i + 1][j - 1],其中dp[i + 1][j - 1] 要考慮邊界情況

class solution 

if(dp[i]

[j]&& j-i+

1>maxlen)}}

return s.

substr

(begin,maxlen);}

};

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s長度最長為1000。示例 輸入 babad 輸出 bab 注意 aba 也是有效答案示例 輸入 cbbd 輸出 bb 方法1 用馬拉車演算法 字串動態規劃 來求最長回文子串時間複雜度可以達到o n 但是部落格裡面有個小失誤 這個id應該不是最大回文...

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb class solution def longestpalindrome self,s k len s olist...

5 最長回文子串

給定乙個字串s,找到s中最長的回文子串。你可以假設s的最大長度為 1000。示例 1 輸入 babad 輸出 bab 注意 aba 也是乙個有效答案。示例 2 輸入 cbbd 輸出 bb 這道題比較船艇的應該是dp求法,但鄙人的dp特別特別的差勁。所以我選用中心擴充套件演算法,掃一遍所有節點,把被掃...