本文主要是介绍leetcode-214. 最短回文串,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
题目
给定一个字符串 s,你可以通过在字符串前面添加字符将其转换为回文串。找到并返回可以用这种方式转换的最短回文串。
示例 1:
输入: "aacecaaa"
输出: "aaacecaaa"
示例 2:
输入: "abcd"
输出: "dcbabcd"
解题思路
因为只能从最前面添加字符,而且要保证添加了字符后组成1个回文串,所以枚举所有可能。对给出的s
,从最后向前找回文串,如果找到index左边的子串是一个回文串的话,那么只需要添加index右边子串的逆序,就可以把字符串变成回文串。
每次判断回文串的复杂度是 o ( n 2 ) o(n^2) o(n2),最坏情况要判断n
次,因此最坏时间复杂度是 o ( n 3 ) o(n^3) o(n3)
代码
class Solution:def shortestPalindrome(self, s: str) -> str:for index in range(len(s), -1, -1):left_word = s[:index]add_word = s[index:]if left_word == left_word[::-1]:breakreturn add_word[::-1] + s
这篇关于leetcode-214. 最短回文串的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!