[Python]LeetCode 214. 最短回文串 023 2020-04-22 519 阅读1分钟 难度:简单 原文:leetcode-cn.com/problems/sh… 题目 给定一个字符串 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是有很多的坑,踩踩就习惯了。