LeetCode 125: 문자열을 뒤집어 팰린드롬 확인하기
비교할 문자만 남깁니다

팰린드롬은 앞에서 읽든 뒤에서 읽든 같은 문자열입니다. 이 문제에서는 영문과 숫자만 비교하고 영문의 대소문자는 구분하지 않습니다.
먼저 정규식 [^a-zA-Z0-9]으로 공백과 특수문자 등 비교하지 않을 문자를 지웠습니다. 그다음 소문자로 바꿔 비교할 문자열 forward를 만들었습니다.
문자열 길이를 이용해 직접 뒤집을까 생각하다가 StringBuilder의 reverse()가 떠올랐습니다. forward를 넣고 뒤집어 backward를 만든 뒤 같은 위치의 문자를 하나씩 비교합니다. 다른 문자를 만나면 바로 false를, 끝까지 같으면 true를 반환합니다.
코드와 당시 결과
class Solution {
public boolean isPalindrome(String s) {
String forward = s.replaceAll("[^a-zA-Z0-9]", "").toLowerCase();
StringBuilder sb = new StringBuilder();
String backward = sb.append(forward).reverse().toString();
for(int i = 0; i < forward.length(); i++){
if(forward.charAt(i) != backward.charAt(i)){
return false;
}
}
return true;
}
}
reverse() 덕분에 구현은 간단했지만 제출 결과는 만족스럽지 않았습니다.