5. 最长回文子串
Link
Problem
给你一个字符串 s
,找到 s
中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例2:
输入:s = "cbbd"
输出:"bb"
提示:
1 <= s.length <= 1000
s
仅由数字和英文字母组成
Solution
func longestPalindrome(s string) string {
n := len(s)
dp := make([][]bool, n)
for i:=range dp {
dp[i] = make([]bool, n)
dp[i][i] = true
}
start, max := 0, 1
for i := n-2; i >= 0 ; i-- {
for j := i+1; j < n; j++ {
if s[i] == s[j] {
if j-i < 3 {
dp[i][j] = true
}else{
dp[i][j] = dp[i+1][j-1]
}
}
if dp[i][j] && j-i+1>max {
start = i
max = j-i+1
}
}
}
return s[start:start+max]
}
最后更新于
这有帮助吗?