Valid Palindrome

zoovely·2024년 5월 9일
0
post-thumbnail

💬 문제

[문제 링크]

문자열 s에서 대문자를 소문자로 변환하고
알파벳, 숫자가 아닌 것을 제거했을 때
순방향, 역방향으로 읽어도 같은 문자열이라면 true 반환
아니라면 false 반환

✍️ 나의 풀이

/**
 * @param {string} s
 * @return {boolean}
 */
var isPalindrome = function(s) {
    s = s.toLowerCase().replace(/[^a-z0-9]/gi,'');
    let i = 0;
    let j = s.length - 1;

    while (i < j) {
        if (s[i] !== s[j])
            return false;
        i++;
        j--;
    }

    return true;
};

첫 줄에서 소문자로 변환하고 숫자, 알파벳이 아닌 것들은 빈 문자로 대체
i는 앞에서부터, j는 뒤에서부터 인덱스 값 확인하여
둘이 다를 경우 false, 인덱스가 교차할 때까지 같다면 true 반환

📌 결과

Accepted
Runtime 44ms (Beats 99.55%)
Memory 51.32MB (Beats 84.56%)

📚 러닝 포인트

toLowerCase까지는 바로 생각해 내서 적었는데, 숫자와 알파벳을 확인하는 함수는 따로 없었기 때문에 어떻게 해야하지 조금 생각했다. 치환할 생각은 못하고 그냥 문자열을 순회하면서 숫자, 알파벳이 아니라면 뛰어넘자 하면서 판단할 수 있는 방법을 찾다가 딱 알맞은 replace 정규식을 발견해서 적용했다. 평소에 정규식을 잘 사용하지 않기도 하고 워낙 자바스크립트에 편한 메소드가 많았어서 의존도가 높아졌던 것 같다. 덕분에 앞으로도 정규식을 잘 활용해봐야겠다는 깨달음을 얻었다.

profile
나도 할 수 있을까?

0개의 댓글