Преобразуйте число в строку и для каждой ненулевой цифры добавьте нужное количество нулей справа. Нулевое число обрабатывается отдельно.
Функция форматирования числа с разложением по разрядам
Преобразуйте число в строку и для каждой ненулевой цифры добавьте нужное количество нулей справа. Нулевое число обрабатывается отдельно.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Условие
Необходимо реализовать функцию, принимающую целое число и возвращающую строку, где число разбито на разряды с указанием их весов.
Пример работы функции:
- вход: 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 ограничивает диапазон входа; для произвольно больших целых этот же алгоритм применяется к проверенной строке десятичных цифр без ведущих нулей. Исходное число не изменяется.