Google 태그 관리자 아이콘

알고리즘 풀이

.leetcode(9. Palindrome Number)

silvergoni 2022. 1. 10. 09:56
반응형

https://leetcode.com/problems/palindrome-number/

 

1. 2022.01.10 시도

소요시간: 5분(string)

// string
class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        
        String str = x+"";
        int p = 0;
        int q = str.length() -1;
        while(p<=q) {
            if (str.charAt(p) == str.charAt(q)) {
                p++;
                q--;
                continue;
            }
            
            return false;
        }
        
        return true;
    }
}

풀이 접근 과정

마이너스는 일단 예외처리 해주고 String으로 만들어서 읽어서 비교하면 끝나겠다.

 

느낀점

  • 공간을 상수만큼만 쓰고 어떻게 할 수 있을까? 고민했는데 솔루션을 보고서 알게되었다. 이런 기막힌 방법이 있다는 것을!! 예전에 리스트로 palindrome을 풀었을 떄처럼 중간을 거꾸로 뒤집는 방법을 해보고 싶었는데 실제로 int에서도 이게 가능하다. 방법은 아래와 같다.
// space: O(1)
class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0 || (x%10 == 0 && x!=0)) {
            return false;
        }
        
        int reversed = 0;
        while (x> reversed) {
            reversed = reversed*10 + x%10;
            x = x/10;
        }
        
        return x == reversed || x == reversed/10;
    }
}

알고리즘 정리노트: .leetcode(알고리즘 문제풀이 접근)

반응형

 

'알고리즘 풀이' 카테고리의 다른 글

.leetcode(112. Path Sum)  (0) 2022.01.16
.leetcode(7. Reverse Integer)  (0) 2022.01.16
.leetcode(226. Invert Binary Tree)  (0) 2022.01.09
.leetcode(617. Merge Two Binary Trees)  (0) 2022.01.09
.leetcode(589. N-ary Tree Preorder Traversal)  (0) 2022.01.09