Java for You 数据结构 最长回文子串 | LeetCode 5

最长回文子串 | LeetCode 5

题目描述

给你一个字符串 s,找到 s 中最长的回文子串。

如果字符串的反序与原始字符串相同,则该字符串称为回文字符串。

​

示例 1:

示例 2:

​

提示:

  • 1 <= s.length <= 1000
  • s 仅由数字和英文字母组成

​

题目解析

寻找回文串的问题核心思想是:从中间开始向两边扩散来判断回文串,对于最长回文子串,就是这个意思:

​

找回文串的关键技巧是传入两个指针 l 和 r 向两边扩散,因为这样实现可以同时处理回文串长度为奇数和偶数的情况。

​

参考代码

以下为 Java 代码。

​

​

复杂度分析

​

  • 时间复杂度:O(n2),其中 n 是字符串的长度。
  • 长度为 1 和 2 的回文中心分别有 n 和 n−1 个,每个回文中心最多会向外扩展 O(n)次。
  • 空间复杂度:O(1)。

本文由 java4u.cn 发布,可自由转载、引用,但需署名作者且注明文章出处(作者:白色蜗牛,出处:java4u.cn)。如转载至微信公众号,请在文末添加作者公众号二维码。 https://java4u.cn/algorithms/3285.html

作者: 蜗牛

区域和检索 – 数组不可变 | LeetCode 303

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

联系我们

公众号:蜗牛互联网

在线咨询: QQ交谈

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

关注微博
返回顶部