力扣9(回文数),扩散指针

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))
展开阅读全文
©️2020 CSDN 皮肤主题: 深蓝海洋 设计师: CSDN官方博客 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值