23. Реализовать инверсию числа
Условие задачи:
🔥 Написать метод, который принимает целое число x, инвертирует его цифры и возвращает результат.
Если число выходит за диапазон
[-10000, 10000], необходимо выбросить исключение.Знак числа должен сохраняться.
📌 Пример 1:
Вход: x = 123
Выход: 321
📌 Пример 2:
Вход: x = -123
Выход: -321
📌 Пример 3:
Вход: x = 120
Выход: 21
Спойлеры к решению
Подсказки
💡 Используй
💡 Каждый шаг умножай результат на 10 и добавляй извлечённую цифру.
💡 Сначала отдели знак числа.
💡 Проверь диапазон входного числа до начала вычислений.
💡 Временная сложность —
% 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).