Ответ
Что хотят услышать интервьюеры
Интервьюеры ожидают увидеть понимание концепции палиндромов и умение реализовать функцию, которая проверяет это, не используя преобразование числа в строку. Кандидат должен продемонстрировать знание различных подходов и алгоритмов, а также способность эффективно работать с числами, используя математические операции. Важно также обратить внимание на временную сложность решения.
Пошаговый план реализации функции проверки палиндрома:
Инициализация переменных:
- Создать переменную для хранения обратного числа.
- Создать копию исходного числа для сравнения.
Цикл для извлечения цифр:
- Использовать цикл, чтобы извлекать последние цифры числа.
- Добавлять каждую извлеченную цифру в обратное число.
Сравнение:
- Сравнить исходное число с полученным обратным числом.
Возврат результата:
- Вернуть
true, если числа равны, иначеfalse.
- Вернуть
Код:
func isPalindrome(_ number: Int) -> Bool {
// Отрицательные числа не могут быть палиндромами
if number < 0 {
return false
}
var originalNumber = number
var reversedNumber = 0
while originalNumber > 0 {
// Извлекаем последнюю цифру
let digit = originalNumber % 10
reversedNumber = reversedNumber * 10 + digit // Добавляем цифру в обратное число
originalNumber /= 10 // Удаляем последнюю цифру из оригинального числа
}
// Сравниваем оригинальное число и обратное
return number == reversedNumber
}
// Примеры использования
print(isPalindrome(121)) // true
print(isPalindrome(-121)) // false
print(isPalindrome(10)) // false
print(isPalindrome(12321)) // trueАнализ кода:
- Проверка на отрицательные числа: Отрицательные числа не могут быть палиндромами, поэтому сразу возвращаем
false. - Цикл while: Цикл продолжается до тех пор, пока оригинальное число больше 0, что позволяет извлекать все цифры.
- Формирование обратного числа: Каждая извлеченная цифра добавляется в
reversedNumber, который строится в обратном порядке. - Сравнение: В конце проверяется равенство оригинального и обратного числа для определения, является ли число палиндромом.
Что могут спросить дальше
- Предложить примеры с различными числами для проверки.
- Объяснить временную сложность алгоритма.
- Уточнить, как обрабатывать числа с нулями в конце.
- Показать, как можно оптимизировать решение.