給定乙個字串 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]:
break
return add_word[::
-1]+ s
LeetCode214 最短回文串
給定乙個字串s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。示例 1 輸入 aacecaaa 輸出 aaacecaaa 示例 2 輸入 abcd 輸出 dcbabcd 1 s s1 s2,其中s1是回文串,s2是s s1。2 ans 反轉後的s2 s cl...
LeetCode 214 最短回文串
給定乙個字串s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。示例 1 輸入 aacecaaa 輸出 aaacecaaa 示例 2 輸入 abcd 輸出 dcbabcd 和hdu clairewd s message類似 其實等價於找最長字首回文串 aace...
LeetCode 214 最短回文串
給定乙個字串s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。class solution def shortestpalindrome self,s str str 回文串從首到尾和從尾部到首部字串同,字串表示的數字同樣也相等。子串問題的乙個經典的解決方法...