1 题目描述
对给定字符串s,找出其最长回文子串(假定s的最大长度为1000)。
例子1:
输入:“babad”
输出:“bab”
释义:“aba"同样是一个有效答案
例子2:
输入:“cbbd”
输出:“bb”
例子3:
输入:“cbbc”
输出:“cbbc”
题目出处:
https://leetcode.com/problems/longest-palindromic-substring/
2 解决思路
有两类回文情况:abba类型与aba类型,即一个轴对称(轴非某个字符),一个关于中间的某个字符对称。
遍历字符串,分别计算两类情况的最长子串(若满足就一直向两边扩大,直至找到最长子串),遍历完成即找出全局最长的回文子串。
3 golang实现代码
https://github.com/leileiluoluo/leetcode/blob/master/5_Longest_Palindromic_Substring/test.go
func longestPalindrome(s string) string {
    if len(s) < 2 {
        return s
    }
    longest := s[0:1]
    for i := 1; i < len(s); i++ {
        for rightStep := 0; rightStep < 2; rightStep++ {
            for p, q := i-1, i+rightStep; p >= 0 && q < len(s) && s[p] == s[q]; {
                if q-p+1 > len(longest) {
                    longest = s[p : q+1]
                }
                p--
                q++
            }
        }
    }
    return longest
}
 正在加载评论......
正在加载评论......