LeetCode-5-最长回文子串

monigo · · 115 次点击 · · 开始浏览    

题目描述

最长回文子串

给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。

示例 1:

输入: "babad"
输出: "bab"
注意: "aba" 也是一个有效答案。

示例 2:

输入: "cbbd"
输出: "bb"

思路

  1. 如果把一个字符串反转,反转后的字符串与原来相同,则该字符串是回文串
  2. 使用暴力法,搜索上做了一些优化

Code

  • Golang
func longestPalindrome(s string) string {
    if IsPalindrome([]byte(s)) {
        return s
    }
    max := ""
    l := len(s)
    cs := []byte(s)
    for i:=0;i<l-1;i++ {
        for j:=i+len(max); j<l+1; j++ {
            if IsPalindrome(cs[i:j]) && len(cs[i:j]) >= len(max) {
                max = string(cs[i:j])
            }
        }
    }
    return max
}

func IsPalindrome(chars []byte) bool {
    l := len(chars)
    for i, v := range chars {
        if chars[l-1-i] != v {
            return false
        }
    }
    return true
}

本文来自:简书

感谢作者:monigo

查看原文:LeetCode-5-最长回文子串

入群交流(和以上内容无关):Go中文网 QQ 交流群:798786647 或加微信入微信群:274768166 备注:入群;关注公众号:Go语言中文网

115 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传