题目描述
给你一个字符串 s,找到 s 中最长的回文子串。
如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。
示例 1:
示例 2:
提示:
- 1 <= s.length <= 1000
- s 仅由数字和英文字母组成
题目解析
寻找回文串的问题核心思想是:从中间开始向两边扩散来判断回文串,对于最长回文子串,就是这个意思:
找回文串的关键技巧是传入两个指针 l 和 r 向两边扩散,因为这样实现可以同时处理回文串长度为奇数和偶数的情况。
参考代码
以下为 Java 代码。
复杂度分析
- 时间复杂度:O(n2),其中 n 是字符串的长度。
- 长度为 1 和 2 的回文中心分别有 n 和 n−1 个,每个回文中心最多会向外扩展 O(n)次。
- 空间复杂度:O(1)。

