[Python]LeetCode 214. 最短回文串

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

示例 1:

输入: "aacecaaa"
输出: "aaacecaaa"
示例 2:

输入: "abcd"
输出: "dcbabcd"

  • 思路1
1. 回文串的定义是自己等于自己的倒过来,str=str[::-1]
2. 一个str+倒过来的str[::-1]肯定是回文了,但这样是冗余的
3. 一个str如果拼接上最后一个字符如果是回文串那就是最小的了
4. 如果不行就再+倒数第二个,依次类推,直到加到完整的倒过来的字符串-1(最差情况,去头)

  • 示例代码
class Solution:
    def shortestPalindrome(self, s: str) -> str:
        if s==s[::-1]:
            return s
        else:
            for index_reverse_str in range(1,len(s)):
                if (s[::-1][:index_reverse_str]+s)[::-1]==(s[::-1][:index_reverse_str]+s):
                    return s[::-1][:index_reverse_str]+s
  • 执行结果:不如意,内存消耗非常好,有空看看人家的解法,启发下。

  • 那次错误的提交记录是因为漏了s=s[::-1]的情况处理,我不是一个合格的测试人员啊,这种情况竟然没想到。哈哈~不过LeetCode是有很多的坑,踩踩就习惯了。