lintcode练习 - 200. 最长回文子串

204 篇文章 0 订阅
190 篇文章 5 订阅

200. 最长回文子串

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

样例

给出字符串 "abcdzdcab",它的最长回文子串为 "cdzdc"

挑战

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

解题思路:

class Solution:
    """
    @param s: input string
    @return: the longest palindromic substring
    """
    
    def longestPalindrome(self, s):
        # write your code here
        pali_list = []
        #第一个循环,子串的长度
        for i in range(1, len(s)+1):
            #第二个循环,从字符串中截取子串
            for j in range(len(s) - i + 1):
                if s[j:j+i] == s[j:j+i][::-1]:
                    pali_list = []
                    pali_list.append(s[j:j+i])
        
        return pali_list[0]
        
  
    
    '''
    def longestPalindrome(self, s):
        # write your code here
        if len(s) == 0:
            return 0
        maxLen = 1
        start = 0
        for i in range(len(s)):
            if i - maxLen >= 1 and s[i - maxLen - 1:i + 1] == s[i - maxLen - 1:i + 1][::-1]:
                start = i - maxLen - 1
                maxLen += 2
                continue

            if i - maxLen >= 0 and s[i - maxLen:i + 1] == s[i - maxLen:i + 1][::-1]:
                start = i - maxLen
                maxLen += 1
        return s[start:start + maxLen]
    '''
    

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值