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를 반환한다. 초고속이다.