포스트

Palindrome Number

LeetCode 9. Palindrome Number

원문

Given an integer x, return true if x is a palindrome, and false otherwise.

풀이

x가 음수이면 false를 반환한다.
그렇지 않은 경우…

Python

deque를 활용했다.
우선 숫자를 자리수 별로 분해해 덱에 넣은 후, 덱의 길이가 1 이하가 될 때까지 양 끝을 비교하며 같으면 양 끝에서 원소를 제거하고, 다르면 false를 반환한다.
덱의 길이가 0 또는 1이 되면 true를 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
from collections import deque


class Solution:
    def isPalindrome(self, x: int) -> bool:
        if x < 0: return False
        n = deque()

        while x:
            n.append(x % 10)
            x //= 10

        while len(n) > 1:
            if n[0] == n[-1]:
                n.pop()
                n.popleft()
            else:
                return False

        return True

Java

반복문을 활용해 뒤집은 숫자를 구한 후 원래 숫자와 비교한 결과를 반환한다.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution {
    public boolean isPalindrome(int x) {
        if (x < 0) {
            return false;
        }
        int compare = 0;
        int number = x;
        while (number > 0) {
            compare = compare * 10 + number % 10;
            number = number / 10;
        }
        if (compare == x) {
            return true;
        }
        return false;
    }
}
이 기사는 저작권자의 CC BY 4.0 라이센스를 따릅니다.