1. 程式人生 > >最長迴文子串 go實現

最長迴文子串 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]

}