📅  最后修改于: 2023-12-03 15:28:32.354000             🧑  作者: Mango
回文字符串是指正反都一样的字符串,例如"level"和"racecar"都是回文字符串。求解最长回文子串一直是编程中的经典问题。这里介绍一种巧妙的方法——通过重新排列原字符串,可以快速求解最长回文子串的长度。
思路如下:
以下是Python语言实现的代码片段:
def longest_palindrome(s: str) -> int:
counts = [0] * 128
for c in s:
counts[ord(c)] += 1
length = 0
odd = False
for count in counts:
if count % 2 == 0:
length += count
else:
length += count - 1
odd = True
return length + odd
例如,给定字符串"abccccdd",该方法将构建回文字符串"ccddbaac",长度为8。