最长回文子串(Longest Palindromic Substring)python

leetcode上面第5题求最长回文串的题目

两种方法:

第一种方法从中心点向两边的扫描

第二种方法暴力穷举,会超时

一、

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        maxlen = -1
        output = s[0]
        
        for mid in range(1,len(s)):
            length=0
            for i in range(1,mid+1):
                if mid-i>=0 and mid+i<len(s):
                    if s[mid+i] == s[mid-i]:
                        length+=1
                    else:
                        break
            if length>=maxlen:
                maxlen=length
                output=s[mid-length:mid+length+1]
            length=0
            for i in range(1,mid+1):
                if mid-i>=0 and mid+i-1<len(s):
                    if s[mid+i-1] == s[mid-i]:
                        length+=1
                    else:
                        break
            if length>maxlen:
                maxlen=length
                output=s[mid-length:mid+length]
                
        return output
        
 二、      
class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        maxlen=0
        output=s[0]
        flag=1
        for start in range(len(s)-1):
            for end in range(len(s)-1,0,-1):
                flag=1
                for i in range((end-start+1)//2):
                    if s[start+i]!=s[end-i]:
                        flag=0
                        break
                if flag==1:
                    length = end-start
                    if length>maxlen:
                        maxlen=length
                        output=s[start:end+1]
                
        return output

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值