代码拉取完成,页面将自动刷新
#最长回文子串
#用一个三角矩阵记录相异性
#以空间换时间
#numpy并没有对三角矩阵或对称矩阵提供很好的支持,因此采用普通矩阵
import numpy as np
class Solution:
def longestPalindrome(self, s):
"""
:type s: str
:rtype: str
"""
#length回文串长度
#index回文串中心
size=len(s)
max_=0
mid=0
res=-1
arr=np.array(list(s))
#采用了广播机制
matrix=(arr==arr[:,None])
print(matrix)
#接下来在matrix中找到最长的true链就ok
for i in range(len(s)):
r=i
c=i
#保证只访问下三角矩阵
while(c>=0 and r<size and matrix[r][c]):
#向下
r+=1
#向左
c-=1
if((r-c-1)>max_):
mid=i
max_=r-c-1
r=i+1
c=i
while(c>=0 and r<size and matrix[r][c]):
r+=1
c-=1
if((r-c-1)>max_):
mid=i
max_=r-c-1
if(max_%2==1):
return s[mid-max_//2:mid+max_//2+1]
else:
return s[mid-max_//2+1:mid+max_//2+1]
a=Solution()
b=a.longestPalindrome("")
print(b)
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。