一、要求
二、背景
(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)时间复杂度很高,如何降低时间复杂度?