题解 | #编号子回文I#

编号子回文I

https://www.nowcoder.com/practice/db5995cd4783483f8b9f7a9e3b3a479f?tpId=354&tqId=10595786&ru=/exam/oj/ta&qru=/ta/interview-202-top/question-ranking&sourceUrl=%2Fexam%2Foj%2Fta%3FtpId%3D354

package main

/**
 * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
 *
 * 
 * @param s string字符串 
 * @return string字符串
*/
func longestPalindrome( s string ) string {
    // write code here
    n:=len(s)
    maxl:=0
    maxr:=0
    maxLen:=1
    for i:=0;i<n*2-1;i++{
        l:=i/2
        r:=(i+1)/2
        for l>=0 && r<n && s[l]==s[r]{
            if r -l +1 > maxLen{
                maxl =l
                maxr =r
                maxLen =r -l +1
            }
            l--
            r++
        }
    }
    return s[maxl:maxr+1]
}

知识点:中心扩展算法

解题步骤:就是枚举每一个中心点向外扩展的回文串的长度,取最大的。有多少个中心点呐,总共有2*n-1个,找规律,举个例子aba,中心点就有a,b,a,ab,ba 五个 == 2*len(aba)-1 ==5

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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