Пример решения задачи #7. Python LeetCode, Reverse Integer
Вариант решения задачи на Python с LeetCode
Категория: Алгоритмы.
Название задачи: Reverse Integer.
Сложность: Средняя.
Статус решения: "Решено".
Условие задачи:
Алгоритмы. Дано целое число x со знаком, представленное в 32-битном формате. Необходимо вернуть число x с обратным порядком цифр. Если при переворачивании цифр число выходит за пределы диапазона 32-битных целых чисел со знаком [-2³¹, 2³¹ - 1], то следует вернуть 0.
Предполагается, что в используемой среде выполнения нельзя хранить 64-битные целые числа (как со знаком, так и без знака).
Ограничения:
-2³¹ ≤ x ≤ 2³¹ - 1
Решение:
Python
class Solution(object):
def reverse(self, x):
"""
:type x: int
:rtype: int
"""
# Определяем границы для 32-битного целого числа
INT_MAX = 2**31 - 1 # Максимальное значение: 2147483647
INT_MIN = -2**31 # Минимальное значение: -2147483648
# Переменная для хранения результата
result = 0
# Сохраняем знак числа и работаем с абсолютным значением
sign = -1 if x < 0 else 1
x = abs(x)
# Переворачиваем цифры числа
while x != 0:
# Получаем последнюю цифру числа
last_digit = x % 10
x //= 10 # Убираем последнюю цифру из числа
# Проверяем, не вызовет ли добавление новой цифры переполнение
if result > (INT_MAX - last_digit) // 10:
return 0 # Если переполнение, возвращаем 0
# Добавляем цифру к результату
result = result * 10 + last_digit
# Возвращаем результат с учетом знака
return sign * result
Объяснение кода
Границы 32-битного числа:
Мы определяем константы INT_MAX и INT_MIN, которые представляют максимальное и минимальное значения для 32-битного целого числа. Это необходимо для проверки переполнения.
Сохранение знака:
Мы сохраняем знак исходного числа (sign), чтобы учесть его при возврате результата. Для этого используем условие: если число отрицательное, sign = -1, иначе sign = 1. Затем работаем с абсолютным значением числа (abs(x)).
Переворачивание цифр:
Используем цикл while, чтобы перевернуть цифры числа. На каждой итерации:
Извлекаем последнюю цифру числа с помощью операции % 10.
Удаляем последнюю цифру из числа с помощью целочисленного деления // 10.
Добавляем извлеченную цифру к результату, умножая текущий результат на 10 и прибавляя цифру.
Пример работы:
Input: x = 123
Output: 321
Input: x = -123
Output: -321
Input: x = 120
Output: 21
Источник решения: hdhai.com