def huiwenshu(strs):
if len(strs) < 2: #当字符串的长度小于2的时候,返回字符串
return strs
maxlen = 0
maxstr = ""
for i in range(len(strs)):
jishu = ss(strs,i,i) #将数据传给ss函数,返回奇数的回文数
oushu = ss(strs,i,i+1) #将数据传给ss函数,返回偶数的回文数
maxstr_ = jishu if len(jishu) > len(oushu) else oushu #当奇数的长度大于偶数的长度的时候返回奇数的,否则返回偶数的
if len(maxstr_) >maxlen: #如果长度大于定义给的maxlen
maxlen = len(maxstr_) #将len(maxstr_)赋值给maxlen
maxstr = maxstr_ #最大字符串赋值给定义的字符串
return maxstr #返回最长的字符转
def ss(strs,left,right):
l = left
r = right
while l>=0 and r<len(strs): #当l满足大于0,r小于字符串长度的时候,允许循环
if strs[r] == strs[l]:#当r索引和l索引的字母相同的条件下
l-=1 #l自减1,r自加1
r+=1
else:
break #不符合的时候中断
return strs[l+1:r] #返回循环结束后的l+1到 r之前索引的(切片)字符串
if __name__ == '__main__':
s = "aswsdfgfdsasdasdadsdwqeasf"
print(huiwenshu(s))
力扣9(回文数),扩散指针
最新推荐文章于 2023-10-04 17:50:11 发布