Coding Interview

[LeetCode] DP, String - 5. Longest Palindromic Substring

milliwonkim 2022. 10. 3. 17:27
반응형
SMALL

문제

Given a string s, return the longest palindromic substring in s.

A string is called a palindrome string if the reverse of that string is the same as the original string.

 

Example 1:

Input: s = "babad"
Output: "bab"
Explanation: "aba" is also a valid answer.

Example 2:

Input: s = "cbbd"
Output: "bb"

 

Constraints:

  • 1 <= s.length <= 1000
  • s consist of only digits and English letters.

코드

/**
 * @param {string} s
 * @return {string}
 */
var longestPalindrome = function(s) {
    let longest = '';

    const generate = (x, y) => {
        while(x >= 0 && y < s.length && s[x] === s[y]) {
            x--;
            y++;
        }
		
        // 만약 x가 -1 일 때, 혹은 만약 y가 s.length + 1일 때를 반영
        return s.slice(x + 1, y);
    }

    for(let i = 0; i < s.length; i++) {
    	// 홀수인 부분을 돈다
        let stringOdd = generate(i, i);
        
        // 짝수인 부분을 돈다
        let stringEven = generate(i, i + 1);

        let palindrome = stringOdd.length > stringEven.length ? stringOdd : stringEven;
        if(palindrome.length > longest.length) {
            longest = palindrome
        }
    }

    return longest
}
반응형
LIST