• LeetCode刷题8——最长回文子串


    一、要求

     二、背景

    (1)回文:正反读都相同的字符串

    (2)找到字符串中对应的索引

    S:字符串

    s:想要求索引的字符

    (1) S.index(s) 只能找到第一个s对应的索引,不能求完

    (2) [i for in range(len(S)) if S[i]==s]  #可以找完全部的索引

    三、解题思路

     1.依次取字符串中字符,找到后面与之相等的字符对应的索引,截取这段字符串并进行回文函数的判断,若新回文长度大于老回文长度,那么用新回文替换老回文

    class Solution:
        def longestPalindrome(self, s: str) -> str:
            if s:
                longpalindromes=s[0]
                for i in range(len(s)):
                    data= s[i+1::]
                    b=s[i]
                    index=[r for r in range(len(data)) if data[r] == b]
                    for j in index:
                        new=self.palindrome(s[i:i+j+2])
                        if len(new)>len(longpalindromes):
                            longpalindromes=new
                return longpalindromes
            else:
                return ''
    
        def palindrome(self,str):
            revers_str =str[::-1]
            if revers_str==str:
                return str
            else:
                return []

     (2)时间复杂度很高,如何降低时间复杂度?

  • 相关阅读:
    2-SAT·hihoCoder音乐节
    Music in Car
    Game with a Strip
    Oleg and Little Ponies
    组合数性质求K个数选取i*j个数分成j组的方案数
    Python学习笔记03
    Python学习笔记02
    Python 学习笔记01
    欺骗侦测
    Oracle 使用小计(4)
  • 原文地址:https://www.cnblogs.com/bethansy/p/12080925.html
Copyright © 2020-2023  润新知