解题思路

  • 抓住回文的特性左边 = 右边两边对称 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)
    }
}