5.最长回文子串(python)

【题目】
在这里插入图片描述
【解题思路】
只采用暴力解法,以后有时间研究研究更快捷的方法(中心枚举法,马拉车算法)。
接下来是思路:第一层循环i从第一个字符开始到最后一个字符,
第二层循环j从i+2 (原因一个字符本身就是回文串,所以是从两个字符开始判断) 开始一直到len(s)+1(由于s[i:j]切片范围是到i-j-1),判断字符串正反序是否相等(判断回文串的条件)。

【python代码】

class Solution(object):
    def longestPalindrome(self, s):
        """
        :type s: str
        :rtype: str
        """
        if len(s) <= 1:
            return s
        max_l = 0
        for i in range (len(s)):
            for j in range (i+2, len(s)+1):
                print (s[i:j], s[i:j][::-1])
                if s[i:j] == s[i:j][::-1]:
                    le = j-i
                    print("le:",le)
                    if max_l < le:
                        max_l = le
                        max_s = s[i:j]
        print (max_s)
        return max_s
        
    
s='1bcb1'
solution = Solution()
solution.longestPalindrome(s) 

【结果】

1b b1
1bc cb1
1bcb bcb1
1bcb1 1bcb1
le: 5
bc cb
bcb bcb
le: 3
bcb1 1bcb
cb bc
cb1 1bc
b1 1b
1bcb1
  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值