困难
技术面试0 次浏览

给定一个字符串,找出其中最长的回文子串。

算法工程师
字符串算法

答题要点

可以使用中心扩展法来找出字符串中最长的回文子串。基本思路是:遍历字符串中的每个字符,以该字符为中心,向两边扩展,判断是否为回文串。同时,考虑回文串长度为奇数和偶数的情况。以下是Python代码实现: 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 s[left + 1:right] longest = '' for i in range(len(s)): # 奇数长度的回文串 palindrome1 = expand_around_center(i, i) # 偶数长度的回文串 palindrome2 = expand_around_center(i, i + 1) if len(palindrome1) > len(longest): longest = palindrome1 if len(palindrome2) > len(longest): longest = palindrome2 return longest 在这段代码中,`expand_around_center`函数用于以给定的左右索引为中心向两边扩展,返回找到的回文串。在主函数中,遍历字符串中的每个字符,分别以该字符为中心和该字符与下一个字符为中心进行扩展,比较找到的回文串的长度,更新最长的回文串。这种方法的时间复杂度是O(n^2),因为对于每个字符都需要向两边扩展。