5 最長回文子串

2021-10-24 00:26:51 字數 1029 閱讀 5899

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

利用dp[i][j]表示字串i位置到j位置構成乙個回文串,易知當s[i]==s[j]時,dp[i][j]=dp[i+1][j-1],表示dp[i][j]是否構成回文串取決於dp[i+1][j-1]是否構成回文串。當s[i]!=s[j]時,dp[i][j]=false。

邊界條件:

class

solution

vectorbool

>>

dp(n +

1, vector<

bool

>

(n +1,

false))

;for

(int i =

0; i < n; i++

)int start =0;

int maxlen =1;

for(

int j =

1; j < n; j++

)else

else}if

(dp[i]

[j])}}

}return s.

substr

(start, maxlen);}

};

明為中心擴充套件,其實思路超級簡單,就是列舉回文串的中心,然後向兩邊擴充套件判斷。

注意奇數和偶數回文串,需要依次列舉。

class

solution

return;}

string longestpalindrome

(string s)

int start =

0, end =0;

for(

int i =

0; i < n; i++)if

(end2 - begin2 +

1> end - start +1)

}return s.

substr

(start, end - start +1)

;}};

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特別特別的差勁。所以我選用中心擴充套件演算法,掃一遍所有節點,把被掃...