早上两个小时才写出来,但是运行超时。。。
感觉自己是真的不会算法,应该系统学习一下才对。
代码我先粘在这里,然后慢慢优化:
class Solution: def longestPalindrome(self, s: str) -> str: if len(s)<2: return s index=[] index_1=[] index_2=[] cha=[] cha_1=[] right=[] for i in range(len(s)): for j in range(i+1,len(s)): if s[i]==s[j]: index.append([i,j]) if j-i<3: right.append(s[i:j+1]) cha.append(j-i) index_2.append([i,j]) else: cha_1.append(j-i) index_1.append([i,j]) else: cha.append(1) right.append(s[0]) #print(index)#相同的两个字母的索引对 #print(index_1)#尚不确定是否回文的序列索引 #print(cha_1)#其他尚且不能确定是不是回文序列的长度 #print(index_2)#回文序列的索引 #print(cha)#长度小于4的回文序列的长度 #print(right)#回文序列 for i in range(len(index_1)): a=index_1[i] #print(a) m=a[0] n=a[1] #print(m,n) #print(s[m],s[n]) #print(s[m+1],s[n-1]) while s[m+1]==s[n-1] and m<=n: m=m+1 n=n-1 #print(m,n) #print(m==n or n-m==1) if m==n or n-m==1: index_2.append(index_1[i]) cha.append(cha_1[i]) right.append(s[index_1[i][0]:index_1[i][1]+1]) if len(cha)<1: return cha else: r=max(cha) w=cha.index(r) #print(index_2) #print(cha) return right[w]
要加油哦,学算法!!!!!
——2019.9.20
原文:https://www.cnblogs.com/taoyuxin/p/11556102.html