LeetCode-Golang之【5. 最长回文子串】

2020-12-09  本文已影响0人  StevenChu1125

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

来源:力扣(LeetCode)

题解

func longestPalindrome(s string) string {
    n :=len(s)
    dp :=make([][]int,n)
    for i:=0;i<n;i++{
        dp[i] = make([]int,n)
    }
    
    ans := ""
    for k:=0;k<n;k++{
        for i:=0;i+k<n;i++{
            j:=i+k
            if k == 0 {
                dp[i][j] = 1
            }else if k == 1 {
                if s[i] == s[j] {
                    dp[i][j] = 1
                }
            }else {
                if s[i] == s[j] {
                    dp[i][j] = dp[i+1][j-1]
                }   
            }
            if dp[i][j] == 1 && k+1 > len(ans){
                ans = s[i:j+1]
            }
        }
    }
    return ans
}
上一篇下一篇

猜你喜欢

热点阅读