栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

LeetCode刷题(python版)——Day5最长回文子串

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

LeetCode刷题(python版)——Day5最长回文子串

一、题设

给你一个字符串 s,找到 s 中最长的回文子串。

二、基本思路

1.从字符串最大个数往最小个数查找是回文字符串的,一旦找到,立刻停止。

2.两层循环的边界根据数字规律列出。

3.当字符串中只有一个字符时,直接返回即可。

不同长度子串第一趟循环数据
lensispan[span,lens+1)[step,step + span)
5151次[0,5)
5242次[0,4)、[1,5)
5333次[0,3)、[1,4)、[2,5)
5424次[0,2)、[1,3)、[2,4)、[3,5)
5515次[0,1)、[1,2)、[2,3)、[3,4)、[4,5)

三、代码实现
class Solution(object):
    def longestPalindrome(self, s):
        lens = len(s)
        # 一个字符返回本身
        if lens == 1:
            return s
        # 判断次数
        for i in range(1,lens+1):
            #区间大小
            span = lens - i + 1
            #移动
            step = 0
            # 子串个数
            for j in range(span,lens+1):
                # 截取子串
                string = s[step : step + span]
                #判断是否回文字符串
                left = 0
                right = len(string) - 1
                while (left < right):
                    if string[left] != string[right]:
                        break
                    left += 1
                    right -= 1
                if left >= right:
                    return string
                step += 1

四、效率总结

 图1:上述做法

图2:官方解法

         由图所示,上述的解法比官方解法的空间复杂度更低,但是时间慢了整整一秒,这无疑是出现了循环的冗杂,但是优劣也不好评判,所以我还是坚持自己的做法了喔,这样更简单易懂不是么,okok今天就到这儿了,明天见~

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1021885.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号