給定一個(gè)字符串 s壁晒,找到 s 中最長(zhǎng)的回文子串哆姻。你可以假設(shè) s 的最大長(zhǎng)度為 1000预吆。
示例 1:
輸入: "babad"
輸出: "bab"
注意: "aba" 也是一個(gè)有效答案薄嫡。
示例 2:
輸入: "cbbd"
輸出: "bb"
// 暴力法
func longestPalindrome(s string) string {
// 先在每一個(gè)字符串左右 拼接上'#'字符
ns := addRune(s, '#')
srune := []rune(ns)
var result string
for index, _ := range srune {
// 向左右兩邊擴(kuò)展,判斷字符串是否是回文字符
i, j := index, index
for {
if i < 0 || j > len(ns)-1 || srune[i] != srune[j] {
break
}
if j-i >= len(result) && i > -1 && j < len(ns) {
result = string(srune[i : j+1])
}
if srune[i] == srune[j] {
i--
j++
}
}
}
return removRune(result, '#')
}
func addRune(str string, char rune) string {
st := []rune(str)
nst := make([]rune, 0)
for _, s1 := range st {
nst = append(nst, char)
nst = append(nst, s1)
}
nst = append(nst, char)
return string(nst)
}
func removRune(str string, char rune) string {
st := []rune(str)
nst := make([]rune, 0)
for index, s1 := range st {
if index%2 == 0 {
continue
}
nst = append(nst, s1)
}
return string(nst)
}