[LeetCode] 5. Longest Palindromic Substring
Posted aaronliu1991
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了[LeetCode] 5. Longest Palindromic Substring相关的知识,希望对你有一定的参考价值。
最长的回文子串。题意是给一个字符串,请输出其中最长的回文子串。例子
Example 1:
Input: "babad" Output: "bab" Note: "aba" is also a valid answer.Example 2:
Input: "cbbd" Output: "bb"
这个题有两种做法,一个是中心扩散法,一个是DP。我暂时只给出中心扩散法怎么做,DP我自己没做明白。无论是DP还是中心扩散法,都需要注意两种不同的case,一种是aba,回文中间只有一个字母;另一种是abba,回文中间是两个字母的。
时间O(n^2)
空间O(1)
1 /** 2 * @param {string} s 3 * @return {string} 4 */ 5 var longestPalindrome = function (s) { 6 let res = ""; 7 function checkPalindrome(left, right) { 8 while (left >= 0 && right < s.length) { 9 if (s[left] === s[right]) { 10 left--; 11 right++; 12 } else { 13 break; 14 } 15 } 16 left++; 17 right--; 18 if (right - left + 1 > res.length) { 19 res = s.substring(left, right + 1); 20 } 21 } 22 23 for (let i = 0; i < s.length; i++) { 24 if (i > 0 && s[i] === s[i - 1]) { 25 checkPalindrome(i - 1, i); 26 } 27 checkPalindrome(i, i); 28 } 29 return res; 30 };
以上是关于[LeetCode] 5. Longest Palindromic Substring的主要内容,如果未能解决你的问题,请参考以下文章
leetcode--5. Longest Palindromic Substring
#Leetcode# 5. Longest Palindromic Substring
LeetCode题解 #5 Longest Palindromic Substring
[LeetCode] 5 Longest Palindromic Substring