[JS] Longest Palindromic Substring
2022. 9. 6. 18:43
🔒 문제 (LeetCode 5)
Given a string s, return the longest palindromic substring in s.
Constraints:
- 1 <= s.length <= 1000
- s consist of only digits and English letters.
🌊 입출력
Example 1:
Input: s = "babad"
Output: "bab"
Explanation: "aba" is also a valid answer.
Example 2:
Input: s = "cbbd"
Output: "bb"
🔑 해결
🌌 알고리즘
/**
* @param {string} s
* @return {string}
*/
var longestPalindrome = function(s) {
let ll = 0 // 가장 긴 팰린드롬의 left
let rr = 0 // 가장 긴 팰린드롬의 right
for(let i = 0; i < s.length; i++) {
// 팰린드롬의 중간에서 시작하여 substring 길이를 늘려가며 팰린드롬 여부 확인
// 길이가 홀수 일 때 중간점은 j=i, 짝수일 때는 j=i+1
for(let j of [i, i+1]) {
for(let l = i, r = j; s[l] && s[l] === s[r]; l--, r++) {
// l, r으로 새로 찾은 팰린드롬이 더 긴 경우 ll, rr 업데이트
[ll, rr] = r - l + 1 > rr - ll + 1 ? [l, r] : [ll, rr]
}
}
}
return s.slice(ll, rr + 1)
};
'코딩테스트 (JS) > DP' 카테고리의 다른 글
[JS] Decode Ways (0) | 2022.09.07 |
---|---|
[JS] Arithmetic Slices (0) | 2022.09.06 |
[JS] Unique Paths (0) | 2022.09.05 |
[JS] Jump Game II (0) | 2022.09.05 |
[JS] House Robber II (0) | 2022.09.04 |