leetcode——5.最长回文子串
发布时间:2020-12-20 10:20:51 所属栏目:Python 来源:网络整理
导读:我的程序: class Solution(object): def longestPalindrome(self,s): """ :type s: str :rtype: str """ if s== ‘‘ : return ‘‘ if len(s)==1 : return s res = [] for i in range(len(s)): c= s[i:].count(s[i]) if c !=1 : b =s[::-1 ].index(s[i]) j
我的程序:
执行用时 :2192 ms,在所有?Python?提交中击败了50.51%的用户
内存消耗 :115.1 MB,在所有?Python?提交中击败了5.06%的用户
?
虽然好不容易用俩小时左右做出来了,但是感觉还是有地方很啰嗦。
执行用时为 20 ms 的范例
class Solution(object):
def longestPalindrome(self,s):
"""
:type s: str
:rtype: str
"""
length = 1 even_medium = 0 even_left = 0 for i in range(len(s) - 1): if i - even_left >= 0 and s[i - even_left] == s[i + 1]: substring = s[i - even_left: i + 2] if substring == substring[: : -1]: even_medium = i length = even_left + 2 even_left = even_left + 2 odd_medium = 0 half = (length + 1) // 2 odd_left = (length + 1) // 2 for j in range(half,len(s) - half): if j - odd_left >= 0 and s[j - odd_left] == s[j + half]: substring = s[j - odd_left: j + half + 1] if substring == substring[: : -1]: odd_medium = j length = odd_left + half + 1 odd_left = odd_left + 2 if length % 2 == 0: return s[even_medium + 2 - length: even_medium + 2] else: if length == 1: return s[0] else: return s[odd_medium + half + 1 - length: odd_medium + half + 1] 分析改进: 将我的程序里面的 if s==‘‘: return ‘‘ if len(s)==1: return s 换成: if len(s) < 2 or s == s[::-1]: return s ? 其他的还没仔细看。。。。 ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ——2019.10.11 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |