Инверсия числа

23. Реализовать инверсию числа

Условие задачи:
🔥 Написать метод, который принимает целое число x, инвертирует его цифры и возвращает результат.

  • Если число выходит за диапазон [-10000, 10000], необходимо выбросить исключение.

  • Знак числа должен сохраняться.

📌 Пример 1:
Вход: x = 123
Выход: 321

📌 Пример 2:
Вход: x = -123
Выход: -321

📌 Пример 3:
Вход: x = 120
Выход: 21


Спойлеры к решению
Подсказки
💡 Используй % 10, чтобы получить последнюю цифру числа.
💡 Каждый шаг умножай результат на 10 и добавляй извлечённую цифру.
💡 Сначала отдели знак числа.
💡 Проверь диапазон входного числа до начала вычислений.
💡 Временная сложность — O(d), где d — количество цифр.
Решение
public class Solution {

    public static int reverse(int x) {
        if (x < -10000 || x > 10000) {
            throw new IllegalArgumentException(
                    "Число должно быть в диапазоне [-10000, 10000]"
            );
        }

        int sign = x < 0 ? -1 : 1;
        int abs = Math.abs(x);
        int reversed = 0;

        while (abs > 0) {
            reversed = reversed * 10 + abs % 10;
            abs /= 10;
        }

        return sign * reversed;
    }

    public static void main(String[] args) {
        System.out.println(reverse(123));   // 321
        System.out.println(reverse(-123));  // -321
        System.out.println(reverse(120));   // 21
    }
}

📌 Что важно помнить:

✅ Работаем с модулем числа, знак возвращаем в конце.
✅ Проверяем диапазон входных данных.
✅ Не используем преобразование в строку — решение математическое.
✅ Сложность алгоритма — O(d).