美文网首页
2019-05-1 LeetCode35. 最长回文子串

2019-05-1 LeetCode35. 最长回文子串

作者: mztkenan | 来源:发表于2019-05-13 15:38 被阅读0次

暴力,所有子串,通过不了

class Solution:
    def longestPalindrome(self, s: str) -> str:
        result=''
        maxL=0
        for i in range(len(s)):
            for j in range(i,len(s)):
                isPal=self.checkPal(s[i:j+1])
                if(isPal and j-i+1>maxL):
                    result=s[i:j+1]
                    maxL=j-i+1  # 这里忘了重新赋值,卡住了
        return result

    def checkPal(self,s:str)-> bool:
        for i in range(len(s)//2):
            if(s[i]!=s[len(s)-1-i]):return False
        return True

参考动态规划的思路,自底向上写,偶尔能通过?4112毫秒,不懂。40分钟

class Solution:
    def longestPalindrome(self, s: str) -> str:
        result=''
        # matrix=np.zeros((len(s),len(s)))
        matrix=[ [0 for j in  range(len(s))] for i in range(len(s))]  #不能用numpy,有点头疼
        # print(matrix)
        maxL=0
        l,r=0,0
        for i in range(len(s)):
            matrix[i][i]=1
            maxL=1
        for i in range(len(s)-1):
            if(s[i]==s[i+1]):
                matrix[i][i+1]=1;
                maxL=2
                l,r=i,i+1
        for t in range(2,len(s)):
            for i in range(len(s)-t): # 边界条件按照特例来想,这里有点卡
                if(s[i]==s[i+t] and matrix[i+1][i+t-1]!=0):
                    matrix[i][i+t]=2  # 妈的写了==号要了命,这里最卡
                    if(maxL<t+1):
                        maxL = t + 1
                        l,r=i,i+t
        return s[l:r+1]

使用中心向外扩展方法快很多,虽然同样是o(n^2 )可以说是比90%的人快

相关文章

  • 2019-05-1 LeetCode35. 最长回文子串

    暴力,所有子串,通过不了 参考动态规划的思路,自底向上写,偶尔能通过?4112毫秒,不懂。40分钟 使用中心向外扩...

  • 最长回文子串

    最长回文子串——Manacher 算法 1. 问题定义 最长回文字符串问题:给定一个字符串,求它的最长回文子串长度...

  • 字符串算法

    最长公共前缀 最长回文串 最长回文子序列 最长公共子串 反转单词顺序列 反转字符串 字符串转数字 IP-int互转

  • 打卡-最长回文子串

    最长回文子串(中等)

  • 最长回文子序列

    该问题区别于最长回文子串,子串必须是连续的,而子序列则可以跳跃,例如AABCAA的最长回文子串为AA,但是它的最长...

  • Manacher算法

    最长回文子串问题# 给定一个字符串,找出最长的回文子串,如"waabwswbfd",则最长子串为bwsb. 中心试...

  • 最长回文子串问题—Manacher算法

    最长回文串问题是一个经典的算法题。 0. 问题定义 最长回文子串问题:给定一个字符串,求它的最长回文子串长度。如果...

  • LeetCode 第647题:回文子串

    1、前言 2、思路 此题与最长回文子串很像,只不过那个是求最长的回文子串,而这个是求回文子串的数目。但是他们的解法...

  • C语言实现求最长回文子串

    最长回文子串的概念 回文串是指正序和反序都一样的字符串,例如:Str1 = "AbbA",则Str1的最长回文子串...

  • Manacher's Algorithm算法分析Java

    Manacher's Algorithm俗称马拉车算法,对于求字符串中最长回文子串效率极高。 在求最长回文子串的时...

网友评论

      本文标题:2019-05-1 LeetCode35. 最长回文子串

      本文链接:https://www.haomeiwen.com/subject/wqwlaqtx.html