[LeetCode] 5. Longest Palindromic Substring

3902 단어
가장 긴 회문 문자열.제목은 문자열을 주는 것입니다. 그 중 가장 긴 문자열을 출력하십시오.예.
Example 1:
Input: "babad"
Output: "bab"
Note: "aba" is also a valid answer.

Example 2:
Input: "cbbd"
Output: "bb"

이 문제는 두 가지 방법이 있는데 하나는 중심확산법이고 하나는DP이다.나는 잠시 중심 확산법만 제시했을 뿐 DP는 나 자신이 이해하지 못했다.DP든 중심확산법이든 두 가지 서로 다른 케이스를 주의해야 한다. 하나는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 };

좋은 웹페이지 즐겨찾기