LeetCode 214 最短回文串

2021-10-09 09:23:18 字數 772 閱讀 1702

給定乙個字串s,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。

class solution:

def shortestpalindrome(self, s: str) -> str:

'''回文串從首到尾和從尾部到首部字串同,字串表示的數字同樣也相等。

子串問題的乙個經典的解決方法為將其轉化為乙個數字,這裡也可以採用同樣的方法。

:param s:

:return:

'''if not s:

return ''

base, mod = 113, 10 ** 7 + 9

val1, val2 = 0, 0

mul = 1

best = -1

for idx in range(len(s)):

# ord函式返回該字元對應的ascii數值

val1 = (val1 * base % mod + ord(s[idx])) % mod

val2 = (val2 + ord(s[idx]) * mul % mod) % mod

mul = mul * base % mod

if val2 == val1:

best = idx

if best != -1:

s1 = s[best + 1:]

return s1[::-1] + s

return s[::-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,你可以通過在字串前面新增字元將其轉換為回文串。找到並返回可以用這種方式轉換的最短回文串。示例 1 輸入 aacecaaa 輸出 aaacecaaa 示例 2 輸入 abcd 輸出 dcbabcd 因為只能從最前面新增字元,而且要保證新增了字元後組成1個回文串,所以列舉所有可能。對給...