https://leetcode.com/problems/valid-palindrome/
핵심 아이디어
s === s.split("").reverse().join("")
- 소문자 일괄 변환은
.toLowerCase()
로 하고 알파벳 숫자 아닌 문자 거르기는 정규표현식/[^a-z0-9]/g
를 사용한다
- 소문자 일괄 변환은
- python, c++ 등 deque 자료구조를 지원한다면 deque로 풀 수 있다
- 맨 앞 글자, 맨 뒤 글자 pop이 많아서 deque가 유리하다
설명
주어진 문자열이 뒤집어도 같은 palindrome인지 판단하는 문제이다. 자료구조로는 앞뒤를 pop하면서 풀면 되기 때문에 list보다 deque가 유리하다.
그러나 놀랍게도 JS에서는 구현된 deque가 존재하지 않는다! 그래서 이 문제는 정규표현식과 js 내장 함수들을 이용하여 풀었다. 실무에서도 정규표현식과 내장함수를 많이 쓰니 오히려 실용적일지도?
코드 (Javascript)
/**
* @param {string} s
* @return {boolean}
*/
var isPalindrome = function(s) {
const alphanumerics = s.toLowerCase().replace(/[^a-z0-9]/g, "");
return alphanumerics === alphanumerics.split("").reverse().join("");
};
유튜브 해설 영상
'Problem Solving' 카테고리의 다른 글
[LeetCode] 937. Reorder Data in Log Files (JS) (0) | 2022.09.03 |
---|---|
[LeetCode] 344. Reverse String (JS) (0) | 2022.08.22 |
[LeetCode] 153. Find Minimum in Rotated Sorted Array (JS) (0) | 2022.08.22 |
[LeetCode] 152. Maximum Product Subarray (JS) (0) | 2022.08.21 |
[LeetCode] 53. Maximum Subarray (JS) (0) | 2022.08.07 |