最长回文子串

给你一个字符串 s,找到 s 中最长的回文子串。

 

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。
示例 2:

输入:s = "cbbd"
输出:"bb"
 

提示:

1 <= s.length <= 1000
s 仅由数字和英文字母组成

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-palindromic-substring
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

对称的字符串是回文子串,比如:aa,aba,abba

中心扩展算法

复制代码
func center(s string, left, right int) (int, int) {
    for left >= 0 && right < len(s) && s[left] == s[right] {
        left -= 1
        right += 1
    }
    return left + 1, right - 1
}

func longestPalindrome(s string) string {
    if len(s) <= 1 {
        return s
    }
    start := 0
    end := 0
    for i := 0; i < len(s); i++ {
        left1, right1 := center(s, i, i)
        left2, right2 := center(s, i, i+1)
        if right1-left1 > end-start {
            start = left1
            end = right1
        }
        if right2-left2 > end-start {
            start = left2
            end = right2
        }
    }
    return s[start : end+1]
}
复制代码

结束!

posted @   aaronthon  阅读(23)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 字符编码:从基础到乱码解决
历史上的今天:
2020-04-24 python读取excel表
2018-04-24 爬取拉钩网
2018-04-24 爬虫自动登陆GitHub
点击右上角即可分享
微信分享提示