Given a string s, find the longest palindromic substring in s. You may assume that the maximum length of s is 1000.
Example 1:
Input: “babad”
Output: “bab”
Note: “aba” is also a valid answer.
Example 2:
Input: “cbbd”
Output: “bb”
思路:
最长的回文字符串的长度可能是奇数也可能是偶数。则分两种情况考虑,
(1)针对奇数情况,则从当前字符的前后两个字符开始比较
(2)针对偶数情况,则从当前字符与其后一个字符开始比较
package main
import "fmt"
func main() {
s := "cbbd"
ret := longestPalindrome(s)
fmt.Println(ret)
}
func longestPalindrome(s string) string {
if (len(s) < 2){
return s
}
result := string(s[0])
for i := 0; i < len(s); i++ {
ret := getPalindrome(s, i, i) // 处理奇数情况
if (len(ret) > len(result)){
result = ret
}
ret = getPalindrome(s, i, i + 1) // 处理偶数情况
if (len(ret) > len(result)){
result = ret
}
}
return result
}
func getPalindrome(s string, beg int, end int) string {
for {
if ((beg >= 0) && (end < len(s) && (s[beg] == s[end]))){
beg--
end++
}else {
break
}
}
beg++
return s[beg : end]
}