Учитывая целое число
x
, вернуть,true
еслиx
это палиндром, иfalse
в противном случае.Пример 1:
Ввод: x = 121 Вывод: true Объяснение: 121 читается как 121 слева направо и справа налево.Пример 2:
Ввод: x = -121 Вывод: false Объяснение: Слева направо читается -121. Справа налево получается 121-. Следовательно, это не палиндром.Пример 3:
Ввод: x = 10 Вывод: false Объяснение: 01 читается справа налево. Следовательно, это не палиндром.Ограничения:
-231 <= x <= 231 - 1
Дополнение: не могли бы вы решить эту задачу, не преобразовывая целое число в строку?
Решение задачи, не преобразовывая целое число в строку, можно осуществить, используя алгоритм для проверки палиндромности числа. Для этого мы будем переворачивать число и сравнивать его с исходным. Если числа равны, то число является палиндромом, иначе нет.
Алгоритм будет выглядеть следующим образом:
- Обработка исключительных случаев:
- Если число x меньше 0, то оно не может быть палиндромом, так как отрицательные числа не палиндромы (Пример 2).
- Если число x оканчивается на 0, то оно также не может быть палиндромом, так как числа, оканчивающиеся на 0, могут быть палиндромами только в случае, если они равны 0 (Пример 3).
- Инициализация переменных:
- Создаем переменную «reversed_num» и устанавливаем её равной 0. В ней будем сохранять число, перевернутое в обратном порядке.
- Основной шаг алгоритма:
- Пока исходное число x больше 0, выполняем следующие действия:
- Получаем последнюю цифру числа x с помощью операции взятия остатка от деления на 10 и добавляем её в конец числа reversed_num.
- Уменьшаем исходное число x на один разряд путем целочисленного деления на 10.
- Пока исходное число x больше 0, выполняем следующие действия:
- Сравнение чисел:
- Если исходное число x равно полученному числу reversed_num, то возвращаем true, так как число является палиндромом.
- В противном случае возвращаем false, так как число не является палиндромом.
Решение задачи «Palindrome Number» пример кода на Python
class Solution(object): def isPalindrome(self, x): # Проверяем исключительные случаи: # Если число меньше 0 или оканчивается на 0 (кроме нуля), # то оно не может быть палиндромом. if x < 0 or (x % 10 == 0 and x != 0): return False reversed_num = 0 original_x = x # Пока исходное число x больше 0, выполняем следующие действия: # - Получаем последнюю цифру числа x с помощью операции взятия остатка от деления на 10 # и добавляем ее в конец числа reversed_num. # - Уменьшаем исходное число x на один разряд путем целочисленного деления на 10. while x > 0: reversed_num = reversed_num * 10 + x % 10 x //= 10 # Сравнение исходного числа x с перевернутым числом reversed_num. return original_x == reversed_num
Решение задачи «Palindrome Number» пример кода на Java
class Solution { public boolean isPalindrome(int x) { // Проверяем исключительные случаи: // Если число меньше 0 или оканчивается на 0 (кроме нуля), // то оно не может быть палиндромом. if (x < 0 || (x % 10 == 0 && x != 0)) { return false; } int reversedNum = 0; int originalX = x; // Пока исходное число x больше 0, выполняем следующие действия: // - Получаем последнюю цифру числа x с помощью операции взятия остатка от деления на 10 // и добавляем ее в конец числа reversed_num. // - Уменьшаем исходное число x на один разряд путем целочисленного деления на 10. while (x > 0) { reversedNum = reversedNum * 10 + x % 10; x /= 10; } // Сравнение исходного числа x с перевернутым числом reversed_num. return originalX == reversedNum; } }
Решение задачи «Palindrome Number» пример кода на C++
class Solution { public: bool isPalindrome(int x) { // Проверяем исключительные случаи: // Если число меньше 0 или оканчивается на 0 (кроме нуля), // то оно не может быть палиндромом. if (x < 0 || (x % 10 == 0 && x != 0)) { return false; } long reversedNum = 0; int originalX = x; // Пока исходное число x больше 0, выполняем следующие действия: // - Получаем последнюю цифру числа x с помощью операции взятия остатка от деления на 10 // и добавляем ее в конец числа reversed_num. // - Уменьшаем исходное число x на один разряд путем целочисленного деления на 10. while (x > 0) { reversedNum = reversedNum * 10 + x % 10; x /= 10; } // Сравнение исходного числа x с перевернутым числом reversed_num. return originalX == reversedNum; } };
Решение задачи «Palindrome Number» пример кода на JavaScript
/** * @param {number} x * @return {boolean} */ var isPalindrome = function(x) { // Проверяем исключительные случаи: // Если число меньше 0 или оканчивается на 0 (кроме нуля), // то оно не может быть палиндромом. if (x < 0 || (x % 10 === 0 && x !== 0)) { return false; } let reversedNum = 0; let originalX = x; // Пока исходное число x больше 0, выполняем следующие действия: // - Получаем последнюю цифру числа x с помощью операции взятия остатка от деления на 10 // и добавляем ее в конец числа reversed_num. // - Уменьшаем исходное число x на один разряд путем целочисленного деления на 10. while (x > 0) { reversedNum = reversedNum * 10 + x % 10; x = Math.floor(x / 10); } // Сравнение исходного числа x с перевернутым числом reversed_num. return originalX === reversedNum; }
Решение задачи «Palindrome Number» пример кода на C#
public class Solution { public bool IsPalindrome(int x) { // Проверяем исключительные случаи: // Если число меньше 0 или оканчивается на 0 (кроме нуля), // то оно не может быть палиндромом. if (x < 0 || (x % 10 == 0 && x != 0)) { return false; } int reversedNum = 0; int originalX = x; // Пока исходное число x больше 0, выполняем следующие действия: // - Получаем последнюю цифру числа x с помощью операции взятия остатка от деления на 10 // и добавляем ее в конец числа reversed_num. // - Уменьшаем исходное число x на один разряд путем целочисленного деления на 10. while (x > 0) { reversedNum = reversedNum * 10 + x % 10; x /= 10; } // Сравнение исходного числа x с перевернутым числом reversed_num. return originalX == reversedNum; } }
Если у вас не отображается решение последних задач, значит у вас включен блокировщик рекламы который вырезает эти ответы