题目描述
给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。
示例 1:
输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。
示例 2:
输入: "cbbd"
输出: "bb"
思路
- 如果把一个字符串反转,反转后的字符串与原来相同,则该字符串是回文串
- 使用暴力法,搜索上做了一些优化
Code
- Golang
func longestPalindrome(s string) string {
if IsPalindrome([]byte(s)) {
return s
}
max := ""
l := len(s)
cs := []byte(s)
for i:=0;i<l-1;i++ {
for j:=i+len(max); j<l+1; j++ {
if IsPalindrome(cs[i:j]) && len(cs[i:j]) >= len(max) {
max = string(cs[i:j])
}
}
}
return max
}
func IsPalindrome(chars []byte) bool {
l := len(chars)
for i, v := range chars {
if chars[l-1-i] != v {
return false
}
}
return true
}
有疑问加站长微信联系(非本文作者)