React

125. Valid Palindrome

A phrase is a palindrome if, after converting all uppercase letters into lowercase letters and removing all non-alphanumeric characters, it reads the same forward and backward. Alphanumeric characters include letters and numbers.
Given a string s, return true if it is a palindrome, or false otherwise.
Example 1:
Input: s = "A man, a plan, a canal: Panama" Output: true Explanation: "amanaplanacanalpanama" is a palindrome.
Plain Text
복사
Example 2:
Input: s = "race a car" Output: false Explanation: "raceacar" is not a palindrome.
Plain Text
복사
Example 3:
Input: s = " " Output: true Explanation: s is an empty string "" after removing non-alphanumeric characters. Since an empty string reads the same forward and backward, it is a palindrome.
Plain Text
복사
Constraints:
1 <= s.length <= 2 * 10^5
s consists only of printable ASCII characters.

My solution

모든 대문자를 소문자로 변환하고 알파벳이 아닌 문자를 모두 제거한 다음, 앞뒤로 읽을 때 같다면 이 구문은 팰린드롬입니다. 알파벳 문자에는 문자와 숫자를 포함합니다.
s가 주어지면 그것이 팰린드롬이면 true를 반환하고, 아니면 false를 반환합니다.
Input: s = "A man, a plan, a canal: Panama" Output: true Explanation: "amanaplanacanalpanama" is a palindrome.
Plain Text
복사
모두 제거하는 과정에 String.prototype.replace()를 적절하게 사용하면 될 것이다.
먼저 해야 하는 것은 알파벳과 숫자를 제외한 문자를 제거하는 것이다.
정규식 패턴으로 만들면 편하다.
const isPalindrome = function (s) { console.log(s.replace(/[^A-Za-z0-9]/g, '')); };
JavaScript
복사
이제 팰린드롬인지 확인하기 위해서 toLowerCase()를 해서 소문자로 맞춘다.
그리고 뒤집어서 기존 s와 비교한다.

Code

/** * @param {string} s * @return {boolean} */ const isPalindrome = function (s) { const convertedS = s.replace(/[^A-Za-z0-9]/g, '').toLowerCase(); return convertedS === convertedS.split('').reverse().join(''); }; describe('isPalindrome', () => { it('TC1', () => { expect(isPalindrome('A man, a plan, a canal: Panama')).toStrictEqual(true); }); it('TC2', () => { expect(isPalindrome('race a car')).toStrictEqual(false); }); it('TC3', () => { expect(isPalindrome(' ')).toStrictEqual(true); }); });
JavaScript
복사