Algolithm-Leetcode/Two Pointers
Valid Palindrome
꿀잠마스터
2026. 7. 21. 22:03
https://leetcode.com/problems/valid-palindrome/description/
Valid Palindrome - LeetCode
Can you solve this real interview question? 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 cha
leetcode.com
문자열의 "palindrome" 이라는 조건을 알려주고 해당 조건에 맞는지 여부를 boolean으로 리턴하는 문제이다.
palindrome의 조건은 다음과 같다.
- 대문자를 소문자로 바꾼다.
- non-alphanumeric 문자를 지운다.
- 1-2 과정을 통해 나온 문자를 앞에서 뒤로, 뒤에서 앞으로 읽을 때 같은 문자열이다
해결한 코드는 아래와 같다.
import java.util.*;
// util 패키지를 임포트 해야 어레이리스트를 사용할 수 있다.
class Solution {
public boolean isPalindrome(String s) {
// 1. 문자열의 소문자 변환
s = s.toLowerCase();
// 2. non-alphanumeric 문자를 제거, alphanumeric 문자만으로 문자열을 새로 구성하기 위해 StringBuilder를 이용
StringBuilder createdSb = new StringBuilder();
for(int i = 0; i < s.length(); i++){
char c = s.charAt(i);
if(c >= 'a' && c <= 'z'){
createdSb.append(c);
}
if(c >= '0' && c <= '9'){
createdSb.append(c);
}
}
// 3. StringBuilder의 reverse() 메서드를 이용하여 boolean 값 체크
String newStr = createdSb.toString();
String reverseStr = new StringBuilder(newStr).reverse().toString();
return newStr.equals(reverseStr);
}
}
자바의 StringBuilder의 메서드 활용하여 풀었다. 이 문제는 예전에 다른 곳에서 본 기억이 살짝 있다. 당시엔 StringBuilder 클래스를 잘 활용하지 못하고 직접 순회하였었다. 이 문제의 카테고리가 Two Pointers인 이유는 각 문자열를 비교하는 것에 이유가 있다. 하지만 자바의 경우 해당 클래스의 메서드를 활용하면 위와 같이 쉽게 해결 가능하다.