9. Palindrome Number
Содержание
Задача
Определите, является ли целое число палиндромом, не преобразуя его в строку.
Подсказки
Переворачивая число и сравнивая его с оригиналом, мы можем определить, является ли оно палиндромом.
Подход
Вместо того чтобы преобразовывать число в строку, мы можем перевернуть его цифры с использованием математических операций, а затем сравнить перевернутое число с оригинальным.
Алгоритм
- Если число отрицательное, то это не палиндром.
- Инициализируем переменную для перевернутого числа: мы будем создавать это число шаг за шагом.
- Переворачиваем число:
- Это достигается путем последовательного взятия последней цифры числа и добавления её к текущему общему количеству после сдвига текущих цифр этого общего числа.
- Например, если у вас есть число 123, мы сначала возьмем 3, затем 2, и, наконец, 1, чтобы создать перевернутое число 321.
- Сравним: Если перевернутое число равно оригинальному, то это палиндром.
Решение
def isPalindrome(x: int) -> bool:
# Отрицательные числа не могут быть палиндромами
if x < 0:
return False
# Инициализируем переменную для перевернутого числа со значением 0
reversed_num = 0
# Используем временную переменную, чтобы не менять оригинальное число
temp = x
# Переворачиваем число
while temp:
# Извлекаем последнюю цифру текущего числа
last_digit = temp % 10 # 12345 % 10 => 5
# Сдвигаем текущие цифры перевернутого числа и добавляем последнюю цифру из temp
reversed_num = reversed_num * 10 + last_digit # 1. 0 * 10 + 5 => 5, 2. 5 * 10 + 4 => 54
# Удаляем последнюю цифру из temp
temp //= 10 # 12345 // 10 => 1234
# Сравниваем перевернутое число с оригиналом
return reversed_num == x