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