要计算一个字符串中最长回文子串的长度,你可以使用动态规划或者中心扩展法。以下是使用中心扩展法的 Python 代码示例:
def longest_palindrome(s):
def expand_around_center(left, right):
while left >= 0 and right < len(s) and s[left] == s[right]:
left -= 1
right += 1
return right - left - 1
if not s:
return 0
start = 0
max_len = 1
for i in range(len(s)):
# 检查奇数长度的回文
len1 = expand_around_center(i, i)
# 检查偶数长度的回文
len2 = expand_around_center(i, i + 1)
max_len = max(max_len, len1, len2)
if max_len > (len(s) - i):
# 剩余部分不可能有更长的回文
break
# 使用找到的回文起始位置和长度,获取最长回文子串
return s[start:start + max_len]
# 示例
s = "babad"
print(longest_palindrome(s)) # 输出: "bab"
在这个示例中,longest_palindrome 函数接受一个字符串 s 作为输入,并使用中心扩展法来查找最长的回文子串。expand_around_center 函数用于从给定的中心位置向两侧扩展,以找到最长的回文。主函数遍历字符串的每个字符,并检查以该字符为中心的最长回文(奇数长度)和以该字符及其右侧字符为中心的最长回文(偶数长度)。最后,它返回找到的最长回文子串。