3주차 · 문자열
쉬움문자열투포인터

팰린드롬 검사

문자열 s가 주어져요. 영문자와 숫자만 남기고 대소문자를 무시했을 때 앞에서 읽으나 뒤에서 읽으나 같으면 true, 아니면 false를 반환해요.

공백, 쉼표, 마침표 같은 문자는 모두 무시해요. 빈 문자열이 되면 팰린드롬으로 봐요.

정규화하고 뒤집어 비교해도 되지만, 양끝에서 좁혀 오는 방식이면 새 문자열을 만들지 않고 끝낼 수 있어요. 8주차 투 포인터의 가장 단순한 형태예요.

예시

예시 1
예시 2
예시 3

제한 사항

  • 1 ≤ s.length ≤ 100,000
  • s 는 출력 가능한 아스키 문자로 이루어져요.
0P 를 조심해요. '0''P' 는 아스키 코드 차이가 32라, 대소문자만 맞추고 종류를 확인하지 않으면 같다고 판단하는 구현이 있어요. 영숫자인지 먼저 확인하고 소문자로 맞춘 뒤 비교해요.
javascript
function 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;
}
이전 문제문자열 뒤집기
다음 문제애너그램 판별
에디터를 불러오고 있어요…
코드를 작성하고를 눌러 예시 테스트를 확인해 보세요.