leetcode之路--leetcode 214. 最短回文串(2)

本文探讨LeetCode 214题“最短回文串”,解析如何通过添加最少字符使任意字符串变为回文串。文章提出一种算法,先找出最长回文前缀,再将剩余子串反转并前置,实现高效解题。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

接上文,继续刷题

leetcode 214. 最短回文串

给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。

输入: "aacecaaa"
输出: "aaacecaaa"

这里的问题和上一篇博客类似。上一篇博客讲的是从一个字符串中找到最长的回文串。该题目是根据已有的字符串,添加最少的字符使其变成回文串。如果首先做了上一篇博客的题目(求取字符串中最长的回文串),那么这个题目就显得比较容易了。

思路:观察给定的几个例子,发现输出的字符串并不是直接将给定的字符串反转添加在字符串头。因为给定的字符串本身就存在回文串的话,添加的字符就会不同,但是只有在从给定字符串的第一个字符算法,求取最长的回文串,将剩下的子串反转添加在字符串头即可。

def t3(s):
    if len(s)<2:
        return s
    length = len(s)
    maxlen = 1
    end = 0
    while maxlen<length+1:
        if s[0:maxlen]==s[0:maxlen][::-1]:
            end = maxlen
        maxlen = maxlen +1
    return s[end:][::-1]+s

另外,还需要注意特殊情况:

当给定的字符串长度为1时,不需要添加任何字符,它本身就是回文串。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值