码迷,mamicode.com
首页 > 其他好文 > 详细

[LeetCode] 5. Longest Palindromic Substring

时间:2020-01-15 09:23:40      阅读:66      评论:0      收藏:0      [点我收藏+]

标签: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

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!