给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
示例 1:
输入: "aacecaaa"
输出: "aaacecaaa"
示例 2:
输入: "abcd"
输出: "dcbabcd"
解答:今天周六,天气晴(大事件:ig打fpx)
又是考验智商的一题,不会做,看了评论才理解
重点就是:判断逆序的末端和正序的前端重叠的部分,然后在逆序上加上重叠之后的部分(比较绕,但画个图可以看出来)
class Solution:
def shortestPalindrome(self, s: str) -> str:
if s==s[::-1]:
return s
reverse=s[::-1]
for i in range(len(s)+1):
if s.startswith(reverse[i:]):
return reverse[:i]+s