Skip to content

Latest commit

 

History

History
91 lines (66 loc) · 3.43 KB

0005-longest-palindromic-substring.adoc

File metadata and controls

91 lines (66 loc) · 3.43 KB

5. 最长回文子串

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

示例 1:

输入:s = "babad"
输出:"bab"
解释:"aba" 同样是符合题意的答案。

示例 2:

输入:s = "cbbd"
输出:"bb"

提示:

  • 1 <= s.length <= 1000

  • s 仅由数字和英文字母组成

思路分析

最简单的方式:使用两个指针,把字符串逐个"拆成"子串,然后留下最大子串即可。可惜,这种算法的时间复杂度是 O(n3)。

中心扩散法

0005 01

没想到,竟然存在时间复杂度为 O(n) 的算法:Manacher’s Algorithm。在维基百科上有解释: Longest palindromic substring - Wikipedia。回头研究研究再补充!

另外,这道题还可以练手动态规划。

一刷
link:{sourcedir}/_0005_LongestPalindromicSubstring.java[role=include]
二刷
link:{sourcedir}/_0005_LongestPalindromicSubstring_2.java[role=include]
三刷
link:{sourcedir}/_0005_LongestPalindromicSubstring_3.java[role=include]