8.最长回文子串-双指针法
思路:
package main
// 思路:双指针,left=i-1,right=i+1,i从0开始循环,先判断左,后判断右,接着判断两边
func longestPalindrome(s string) string {
var maxLen, maxStart int
var longestLen = 1
for i := 0; i < len(s); i++ {
left, right := i-1, i+1
for left >= 0 && s[left] == s[i] {
left--
longestLen++
}
for right < len(s) && s[right] == s[i] {
right++
longestLen++
}
for left >= 0 && right < len(s) && s[right] == s[left] {
left--
right++
longestLen = longestLen + 2
}
if longestLen > maxLen {
maxStart = left
maxLen = longestLen
}
longestLen = 1
}
return s[maxStart+1 : maxStart+maxLen+1]
}Last updated