标签:strong 例子 有一个 fun block UNC 时间 put 空间
最长的回文子串。题意是给一个字符串,请输出其中最长的回文子串。例子
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
标签:strong 例子 有一个 fun block UNC 时间 put 空间
原文地址:https://www.cnblogs.com/aaronliu1991/p/12194816.html