📅  最后修改于: 2023-12-03 15:28:13.766000             🧑  作者: Mango
这是一道Wipro模拟测试的题目,出题方要求求出一个字符串中最长的连续回文字符串的长度。 因此,我们需要编写一个函数来实现此功能。
最长的连续回文字符串可以通过遍历字符串中的每一个字符,并以此为中心向两侧扩展得到。 如果该字符串长度大于已经记录的最长回文字符串长度,则更新记录。 最后返回最长回文字符串长度即可。
这个算法的时间复杂度为O(n^2),在最坏的情况下需要扫描整个字符串。
下面是在Python中实现的代码:
def longest_palindrome(s: str) -> int:
res = 0
for i in range(len(s)):
#以i为中心向两侧扩展,找到回文字符串长度
l, r = i, i
while l >= 0 and r < len(s) and s[l] == s[r]:
l -= 1
r += 1
res = max(res, r - l - 1)
#以i和i+1为中心向两侧扩展,找到回文字符串长度
l, r = i, i+1
while l >= 0 and r < len(s) and s[l] == s[r]:
l -= 1
r += 1
res = max(res, r - l - 1)
return res
下面是一些测试样例:
assert longest_palindrome("babad") == 3 # "bab" 或 "aba"
assert longest_palindrome("cbbd") == 2 # "bb"
assert longest_palindrome("a") == 1 # "a"
assert longest_palindrome("ac") == 1 # "a" 或 "c"
这个算法可以有效地解决最长回文字符串的问题,时间复杂度为O(n^2)。 但是,在实际应用中,这个算法有时可能不够高效,需要更优的算法。