НовоеAI-конструктор резюме: правишь прямо на листе A4, а нейросеть подсказывает, что усилитьКонструктор резюме на листе A4Попробовать
JobPath
Начать бесплатно

iOSSeniorЗадача на код

Напиши функцию, которая проверяет, является ли число палиндромом без преобразования в строку

Встречался на собеседовании

Ответ

Что хотят услышать интервьюеры

Интервьюеры ожидают увидеть понимание концепции палиндромов и умение реализовать функцию, которая проверяет это, не используя преобразование числа в строку. Кандидат должен продемонстрировать знание различных подходов и алгоритмов, а также способность эффективно работать с числами, используя математические операции. Важно также обратить внимание на временную сложность решения.

Пошаговый план реализации функции проверки палиндрома:

  1. Инициализация переменных:

    • Создать переменную для хранения обратного числа.
    • Создать копию исходного числа для сравнения.
  2. Цикл для извлечения цифр:

    • Использовать цикл, чтобы извлекать последние цифры числа.
    • Добавлять каждую извлеченную цифру в обратное число.
  3. Сравнение:

    • Сравнить исходное число с полученным обратным числом.
  4. Возврат результата:

    • Вернуть 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, который строится в обратном порядке.
  • Сравнение: В конце проверяется равенство оригинального и обратного числа для определения, является ли число палиндромом.

Что могут спросить дальше

  • Предложить примеры с различными числами для проверки.
  • Объяснить временную сложность алгоритма.
  • Уточнить, как обрабатывать числа с нулями в конце.
  • Показать, как можно оптимизировать решение.
Ответ помог?
Тренироваться бесплатно

Связаться с поддержкой

Выбери, где удобнее написать