문자열 s가 주어져요. 영문자와 숫자만 남기고 대소문자를 무시했을 때 앞에서 읽으나 뒤에서 읽으나 같으면 true, 아니면 false를 반환해요.
공백, 쉼표, 마침표 같은 문자는 모두 무시해요. 빈 문자열이 되면 팰린드롬으로 봐요.
정규화하고 뒤집어 비교해도 되지만, 양끝에서 좁혀 오는 방식이면 새 문자열을 만들지 않고 끝낼 수 있어요. 8주차 투 포인터의 가장 단순한 형태예요.
예시
예시 1
예시 2
예시 3
제한 사항
- 1 ≤ s.length ≤ 100,000
- s 는 출력 가능한 아스키 문자로 이루어져요.
0P 를 조심해요. '0' 과 'P' 는 아스키 코드 차이가 32라, 대소문자만 맞추고 종류를 확인하지 않으면 같다고 판단하는 구현이 있어요. 영숫자인지 먼저 확인하고 소문자로 맞춘 뒤 비교해요.javascriptCopy codefunction palindromeCheck(s) {const isAlnum = (c) => /[a-z0-9]/.test(c);let i = 0;let j = s.length - 1;while (i < j) {const a = s[i].toLowerCase();const b = s[j].toLowerCase();if (!isAlnum(a)) { i++; continue; }if (!isAlnum(b)) { j--; continue; }if (a !== b) return false;i++;j--;}return true;}
예시 테스트만 실행 (Cmd/Ctrl+Enter)
숨김 테스트까지 채점 (Cmd/Ctrl+Shift+Enter)
에디터를 불러오고 있어요…
코드를 작성하고Ctrl↵를 눌러 예시 테스트를 확인해 보세요.