解题思路
- 抓住回文的特性左边 = 右边两边对称 str[left] = str[right]
- 对于奇数个数的回文,对称中心在中间的那个数 subStr(str,i,i)
- 对于偶数个数的回文,对称中心在左右两边数的中间 sub(str,i,i+1)
package main
import (
"fmt"
)
func subStr(str string, left, right int) int {
for {
if left >= 0 && right < len(str) && str[left] == str[right] {
left -= 1
right += 1
} else {
return len(str[left + 1:right])
}
}
}
func main() {
var str string
for {
if n, _ := fmt.Scan(&str); n == 0 {
return
}
max := 0
for i := 0; i < len(str); i++ {
//回文串为长度为奇数
n1 := subStr(str, i, i)
if n1 > max {
max = n1
}
// 回文串为长度为偶数
n2 := subStr(str, i, i+1)
if n2 > max {
max = n2
}
}
fmt.Println(max)
}
}