• 200. 最长回文子串


    200. 最长回文子串

    中文English

    给出一个字符串(假设长度最长为1000),求出它的最长回文子串,你可以假定只有一个满足条件的最长回文串。

    样例

    样例 1:

    输入:"abcdzdcab"
    输出:"cdzdc"
    

    样例 2:

    输入:"aba"
    输出:"aba"
    

    挑战

    O(n2) 时间复杂度的算法是可以接受的,如果你能用 O(n) 的算法那自然更好。

    输入测试数据 (每行一个参数)如何理解测试数据?
    时间复杂度:O(n2)  空间复杂度:常数
    class Solution:
        """
        @param s: input string
        @return: the longest palindromic substring
        """
        """
        大致思路:
        1.首先呢,给个方法,判断当前字符串是否是回文子串
        2.初始化p=0,res =None,假如当前回文子串长度大于p,则更新res
        3.外层循环s,内层依次加1循环,1,3,5,7,一直到长度为s为止,最终返回res
        """
        def longestPalindrome(self, s):
            # write your code here
            p,res = 0,None
            
            for i in range(len(s)):
                j = i + 1
                while j  <= len(s):
                    #判断是否是回文字符串,并且和p进行比较,如果小于,则更新
                    if s[i:j] == s[i:j][::-1] and  len(s[i:j]) > p:
                        p = len(s[i:j])
                        res = s[i:j]
                    j += 1
            return res

     双指针写法:

    class Solution:
        """
        @param s: input string
        @return: the longest palindromic substring
        """
        '''
        大致思路:
        1.给出一个方法,判断是否是回文子串,双指针,只要是不等,则break,否则继续判断下去.然后初始化length = 0,如果长度大于length,则更新
        '''
    
        def longestPalindrome(self, s):
            if not s or s == '':return 0
            
            #初始化
            l = 0
            res = ''
            for i in range(len(s)):
                new_res = self.isPalindrome(s,i,i) if len(self.isPalindrome(s,i,i)) > len(self.isPalindrome(s,i,i+1)) else self.isPalindrome(s,i,i + 1)
            
                if len(new_res) > l:
                    res = new_res
                    l = len(new_res)
            return res
    
        def isPalindrome(self,s,i,j):
            while i >= 0 and j <= len(s) - 1:
                if (s[i] != s[j]):
                    break
                i -= 1
                j += 1
            return s[i+1:j]
  • 相关阅读:
    HTTP 协议中的并发限制及队首阻塞问题
    聊聊JMM
    聊聊CacheLine
    git解决本地建立git仓库 连接远程git仓库出现拒绝合并问题
    django 本地项目部署uwsgi 以及云服务器部署 uwsgi+Nginx+Docker+MySQL主从
    我的第一篇播客
    大爷的超市管理系统——冲刺第一天
    能混绝不C——凡事预则立
    2020软件工程团队作业——05
    2020软件工程作业——04
  • 原文地址:https://www.cnblogs.com/yunxintryyoubest/p/12950802.html
走看看 - 开发者的网上家园