Java

LeetCode: Palindrome Number

Daeryuk Kim 2024. 4. 3. 16:24
import java.util.*;
class Solution
{
	public boolean isPalindrome(int x) {
        // 음수거나, 마지막 숫자가 0이면서 0이 아닌 경우는 팰린드롬이 될 수 없습니다.
        // 1220 <= 마지막이 0이면 다 안 됨. 0220이란 수가 없는 것처럼 말이다.
        if (x < 0 || (x % 10 == 0 && x != 0)) {
            return false;
        }

        int reversed = 0;
        // 원래 숫자의 절반을 뒤집어 비교합니다.
        while (x > reversed) {
            reversed = reversed * 10 + x % 10;
            x /= 10;
        }

        // 짝수 자리수의 숫자는 완전히 뒤집힐 때, 홀수 자리수의 숫자는 중간 숫자를 제외하고 뒤집힐 때
        // 두 수가 같거나, reversed에서 마지막 숫자를 제거한 것과 x가 같으면 팰린드롬입니다.
        return x == reversed || x == reversed / 10;//123일 때) x=12, 123/10=12
    }
	public static void main(String[] args) {
		int x = 121;
		
		Solution main = new Solution();
		boolean result = main.isPalindrome(x);
	    System.out.println(result);
		
	}
}

단순 뒤집은 값마저 원래 x와 같으면 true를 반환한다. 초고속이다.