go語言LeeCode刷題記:5. 最長迴文子串
阿新 • • 發佈:2019-01-03
給定一個字串 s
,找到 s
中最長的迴文子串。你可以假設 s
的最大長度為 1000。
示例 1:
輸入: "babad" 輸出: "bab" 注意: "aba" 也是一個有效答案。
示例 2:
輸入: "cbbd" 輸出: "bb"
答案:
func longestPalindrome(s string) string { if s == "" { return "" } if isPalindrome(s) { return s } //字串遍歷找到所有迴文字串 pdMap := make(map[string]int) for i := 0; i < len(s); i++ { for j := len(s); j > i+1; j-- { tmp := s[i:j] if isPalindrome(tmp) { pdMap[tmp] = len(tmp) } } } //確定最長迴文字串 max := 0 rst := "" for k, v := range pdMap { if v > max { max = v rst = k } } if rst == "" { return s[0:1] } return rst } func isPalindrome(s string) bool { if len(s) < 1 { return false } if len(s) == 2 && s[0] == s[1] { return true } for i := 0; i < len(s)/2; i++ { if s[i] != s[len(s)-i-1] { return false } } return true }