Эффективное создание текста
Часть раздела Логика и управление потоком путешествия по Kotlin на Coddy. Урок 47 из 63.
StringBuilder накапливает текст с помощью вызовов append, затем toString создаёт итоговый String. Внутри цикла можно добавлять метки, числа и разделители, не создавая вручную заново всю неизменяемую строку String на каждом шаге. Точно определите, где должны находиться разделители.
Внутри main:
val result = StringBuilder()
for (n in 1..3) {
if (n > 1) result.append("-")
result.append(n)
}
println(result.toString())Разделитель добавляется перед каждым элементом, кроме первого, поэтому в конце не остаётся дефиса.
Используйте StringBuilder.append для поэтапного добавления текста и toString для получения итоговой String.
Задание
СреднеДополните numberLine параметром count: Int. Используйте StringBuilder, чтобы вернуть числа от 1 до count, разделённые одним дефисом, без ведущего или завершающего дефиса. count находится в диапазоне от 0 до 20; при нулевом значении возвращается пустая строка.
Если выше не указаны более строгие границы, коллекции содержат не более 100 элементов на каждом уровне, а целочисленные аргументы и целочисленные значения коллекций находятся в диапазоне от -1000 до 1000. Текст, предоставленный для разбора, может содержать недопустимые представления или представления, выходящие за допустимый диапазон, как описано далее.
Верните значение типа String. Сохраните предоставленный код ввода/вывода. Он считывает скалярные аргументы по одному в строке; список начинается с его количества, за которым следуют его элементы, а отображение начинается с количества его записей, за которым следуют каждый ключ и значение. Вложенные списки повторяют формат «количество и элементы» для каждой строки. Предоставленный main выводит возвращаемое значение, за которым следует один перевод строки. Для списков используется стандартный формат Kotlin со скобками; не выводите дополнительные метки.
Попробуйте сами
fun numberLine(count: Int): String {
// Напишите ваше решение здесь.
return ""
}
fun main() {
val count = readln().toInt()
println(numberLine(count))
}В этом уроке есть небольшой тест. Начните урок, чтобы ответить на вопросы и сохранить прогресс.
Все уроки раздела Логика и управление потоком
1Карты, часть 1
Создание картБезопасный доступ к картамОбновление картПроверка ключейПовторение — складской учёт4Вложенные коллекции
Списки списковОбход строкСводки по строкамСведение вложенных списковПовторение — ряды мест7Конвейеры коллекций
Преобразование с помощью MapФильтрация значенийПроверка правил коллекцийНакопление с помощью FoldПовторение — одобренные итоги10Обработка текста
Разделение и объединениеЭффективное создание текстаСопоставление шаблонов текстаПоиск и заменаПовторение — более чистый код2Карты. Часть 2
Перебор записей картыКлючи и значенияКарты частотВложенные картыПовторение — отчёт о частотах5Проект — Книга контактов
Сохранение контактовПоиск контактов3Множества и принадлежность
Создание множествОбновление множествОперации над множествамиПроверка подмножествПовторение — гости мероприятия6Значения функций
Написание лямбдТипы функцийПередача функцийЗахваченные переменныеПовторение — настраиваемый счёт9Расширенный контроль потока выполнения
Защитные условияПрерывание именованных цикловПродолжение именованных цикловРекурсивные функцииПовторение — первая допустимая строкаПотренируйтесь самостоятельно: Песочница Kotlin