View

반응형

 

 

【 문제 】

 

  • 주어진 문자열이 팰린드롬(가운데를 기준으로 양쪽이 동일한 문자열)인지 확인하는 문제이다.
  • 대소문자를 구분하지 않으며(모두 소문자로), 영문자와 숫자만을 대상으로 한다.

 

 

 

【 풀이 】

 

  1. 문자열을 순회하며 영문자와 숫자만을 StringBuilder에 추가한다. (Character 인터페이스의 isLetterOrDigit 메소드 사용)
  2. StringBuilder의 처음과 끝부터 비교하며 팰린드롬 여부를 확인한다.
  • 시간 복잡도: O(n)
  • 공간 복잡도: O(n)

 

 

 

【 코드 】

 

public class LeetCode_125 {
    public boolean isPalindrome(String s) {
        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < s.length(); i++) {
            if (Character.isLetterOrDigit(s.charAt(i))) {
                sb.append(Character.toLowerCase(s.charAt(i)));
            }
        }

        int n = sb.length() - 1;
        for (int i = 0; i < sb.length() / 2; i++) {
            if (sb.charAt(i) != sb.charAt(n)) {
                return false;
            }
            n--;
        }
        return true;
    }
}
728x90
반응형

'Problem Solving > LeetCode' 카테고리의 다른 글

[LeetCode] 205. Isomorphic Strings [Java]  (0) 2024.04.04
[LeetCode] 392. Is Subsequenc [Java]  (0) 2024.04.01
Share Link
reply
250x250
반응형
«   2024/07   »
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31