牛客题霸 NC17 最长回文子串
生活随笔
收集整理的這篇文章主要介紹了
牛客题霸 NC17 最长回文子串
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
https://www.nowcoder.com/practice/8a19cbe657394eeaac2f6ea9b0f6fcf6
解決方案
Go
Manacher(馬拉車)算法
func getLongestPalindromeManacher(A string, n int) int {// write code hereif n <= 1 {return n}ss := "$#"for i := 0; i < n; i++ {ss = ss + A[i:i+1] + "#"}ss = ss + "`"l := len(ss)p := make([]int, l)max_str := ""mx := 0center := 0for i := 1; i < l-1; i++ {if mx > i {j := 2*center - iif p[j] < mx-i {p[i] = p[j]} else {p[i] = mx - i}}for pj := p[i] + 1; ss[i-pj] == ss[i+pj]; pj++ {p[i]++}if p[i] > mx {center = imx = i + p[i]}if 2*p[i]+1 > len(max_str) {max_str = ss[i-p[i] : i+p[i]+1]}}return len(max_str)/2 }參考文章
總結
以上是生活随笔為你收集整理的牛客题霸 NC17 最长回文子串的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 牛客题霸 NC16 判断二叉树是否对称
- 下一篇: 牛客题霸 NC18 顺时针旋转矩阵