package main
import (
"fmt"
)
func main() {
var a string
fmt.Scan(&a)
start,end := 0,0
for i:=0;i<len(a);i++{
// 奇数对称 abcab
l1,r1 := expondAroundCentent(i, i, a)
if r1 - l1 > end - start{
start,end = l1,r1
}
// 偶数对称 abab
l2,r2 := expondAroundCentent(i, i+1, a)
if r2 - l2 > end - start{
start,end = l2,r2
}
}
//fmt.Println(end)
fmt.Println(end-start+1) // 长度是+1 细节
}
// 中心扩散对比法
func expondAroundCentent(left int,right int,s string)(int,int){
for ; left >= 0 && right < len(s) && s[left] == s[right]; left,right = left-1,right+1{}
// 退出条件时left 多加了1要减去
return left+1,right-1
}
中心扩散法,区分奇数对称还是偶数对称



京公网安备 11010502036488号