Palindrome Number
https://leetcode.com/problems/palindrome-number | Easy |
Условие
Определите, является ли данное число палиндромом. Число считается палиндромом, если оно читается одинаково слева направо и справа налево.
Примеры
Input:
121Output:
true
Input:
-121Output:
false
Input:
10Output:
false
Решение
fun isPalindrome(x: Int): Boolean {
// Отрицательные числа не могут быть палиндромами
if (x < 0) return false
// Если число оканчивается на 0 и не является нулем, то оно не может быть палиндромом
if (x % 10 == 0 && x != 0) return false
var original = x // Сохраняем оригинальное число для последующего сравнения.
var reversed = 0 // Переменная для хранения инвертированного числа.
// Инвертируем число
while (original > 0) {
val digit = original % 10 // Извлекаем последнюю цифру текущего числа.
reversed = reversed * 10 + digit // Добавляем эту цифру к `reversed`, передвигая текущие цифры на одну позицию влево.
original /= 10 // Удаляем последнюю цифру из `original` путем целочисленного деления на 10.
}
// Сравниваем инвертированное число с исходным
return reversed == x
}
Временная сложность
O(log n), где n — входное число. Временная сложность пропорциональна количеству цифр в числе.
Пространственная сложность
O(1). Используется фиксированное количество дополнительной памяти для хранения переменных.