(Leetcode) 125 - Valid Palindrome
위 링크에 있는 문제들을 eazy 부터 시간이 있을때마다 풀어보려고 한다.
https://leetcode.com/problems/valid-palindrome/
내가 작성한 풀이
class Solution {
public boolean isPalindrome(String s) {
StringBuilder filtered = new StringBuilder();
for(char c : s.toCharArray()) {
// '0' == 48, '9' == 57, 'A' == 65, 'z' == 122
if ((c >= '0' && c <= '9') || (c >= 'a' && c <= 'z')) {
filtered.append(c);
} else if ((c >= 'A' && c <= 'Z')) {
filtered.append((char) (c + 32));
}
}
for(int i = 0; i < filtered.length() / 2; i++) {
if (filtered.charAt(i) != filtered.charAt(filtered.length() - i - 1)) {
return false;
}
}
return true;
}
}
문제 조건에 따라 숫자, 소문자, 대문자 를 제외한 문자는 제거해야 하며, 대문자는 소문자로 바꾸어야 한다. java 는 char 타입이 존재하기 때문에 char 타입으로 문제를 해결하였다. 필터를 마치면 문자열이 좌우 대칭인지 확인한다.
TC, SC
이 풀이의 시간 복잡도는 O(n)이고, 공간 복잡도는 O(n)이다.