Функция форматирования числа с разложением по разрядам

Преобразуйте число в строку и для каждой ненулевой цифры добавьте нужное количество нулей справа. Нулевое число обрабатывается отдельно.

Короткий ответ

Что ответить на собеседовании

Преобразуйте число в строку и для каждой ненулевой цифры добавьте нужное количество нулей справа. Нулевое число обрабатывается отдельно.

Подробный разбор

Ответ с пояснениями

Условие

Необходимо реализовать функцию, принимающую целое число и возвращающую строку, где число разбито на разряды с указанием их весов.

Пример работы функции:

  • вход: 12
  • выход: "10 + 2"

Формат вывода: каждое разрядное значение (дескриптор) соединяется через знак "+" с пробелами по обе стороны. Если число состоит из одного разряда, возвращается строка, содержащая само число без знака плюса.

Функцию следует написать так, чтобы она корректно обрабатывала любые неотрицательные целые числа, включая ноль.

Ответ

Преобразуйте число в строку и для каждой ненулевой цифры добавьте нужное количество нулей справа. Нулевое число обрабатывается отдельно.

func expanded(_ number: UInt64) -> String {
    if number == 0 { return "0" }
    let digits = Array(String(number))
    var parts: [String] = []
    for (index, digit) in digits.enumerated() {
        if digit != "0" {
            parts.append(String(digit) + String(repeating: "0",
                count: digits.count - index - 1))
        }
    }
    return parts.joined(separator: " + ")
}

Например, 1204 превращается в "1000 + 200 + 4", а 7 — в "7". UInt64 ограничивает диапазон входа; для произвольно больших целых этот же алгоритм применяется к проверенной строке десятичных цифр без ведущих нулей. Исходное число не изменяется.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее