Переверните строку модуля числа, преобразуйте обратно в int и восстановите знак. Концевые нули исходного числа исчезнут.
Обратный порядок цифр числа
Переверните строку модуля числа, преобразуйте обратно в int и восстановите знак. Концевые нули исходного числа исчезнут.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Дано целое число, например 123. Необходимо получить число с переставленными в обратном порядке цифрами (в примере получится 321). Можно использовать любые удобные способы преобразования, включая работу со строковым представлением числа.
Ответ
Переверните строку модуля числа, преобразуйте обратно в int и восстановите знак. Концевые нули исходного числа исчезнут.
def reverse_digits(number):
sign = -1 if number < 0 else 1
return sign * int(str(abs(number))[::-1])
assert reverse_digits(123) == 321
assert reverse_digits(-120) == -21
assert reverse_digits(0) == 0
Переворачивать строку '-120' целиком нельзя: получится '021-', что не является корректным целым литералом. Знак обрабатывается отдельно.
Если требуется сохранить ведущие нули результата, возвращаемый тип должен быть строкой, а не числом. Для d цифр строковый способ использует O(d) памяти. Альтернатива без строк — повторять деление на 10 и накапливать результат.