最长回文子串 go实现

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

示例 1:

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

输入: "cbbd"
输出: "bb"
func longestPalindrome(s string) string {
    n:=len(s)
    if s=="" {
        return ""
    }
    if n==1 {
        return s
    }
    start:=0
    maxLen:=0
    for i:=0;i<n ;  {
        if n-i<=maxLen/2 {
	break
        }
        left:=i
        right:=i
        for right<n-1&&s[right]==s[right+1] {
	right++
        }
        i=right+1
        for right<n-1&&left>0&&s[left-1]==s[right+1]  {
	left--
	right++
        }
        newlen:=right-left+1
        if newlen>maxLen {
	start=left
	maxLen=newlen
        }
    }

    return s[start:start+maxLen]

}

猜你喜欢

转载自blog.csdn.net/s15738841819/article/details/84658595