题解 | #最长回文子串#

最长回文子串

http://www.nowcoder.com/practice/12e081cd10ee4794a2bd70c7d68f5507

package main

import (
	"bufio"
	"fmt"
	"io"
	"os"
)

func main() {
	for {
		r := bufio.NewReader(os.Stdin)
		b, _, err := r.ReadLine()
		if err == io.EOF {
			break
		}
		str := string(b)
		if str != "" {
			getMaxStr(str)
		}

	}
}

func getMaxStr(str string) {
	var maxLen int
	for i := range str {
		dInt := doubleCheck(str, i)
		sint := singleCheck(str, i)
		if maxLen < dInt {
			maxLen = dInt
		}
		if maxLen < sint {
			maxLen = sint
		}
	}
	fmt.Println(maxLen)
}
func doubleCheck(str string, current int) int {
	var pre int = current
	var suf int = current + 1
	var count int
	for {
		if pre < 0 || suf > len(str)-1 {
			break
		}
		if str[pre] != str[suf] {
			break
		}
		count += 2
		pre -= 1
		suf += 1

	}

	return count
}

func singleCheck(str string, current int) int {
	var pre int = current
	var suf int = current
	var count int
	for {
		pre -= 1
		suf += 1
		if pre < 0 || suf > len(str)-1 {
			break
		}
		if str[pre] != str[suf] {
			break
		}
		count += 2
	}

	return count + 1

}

全部评论

相关推荐

2025-12-17 17:15
华东师范大学 运营
点赞 评论 收藏
分享
01-13 16:55
已编辑
大连理工大学 运营
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务