Menu
CoddyTech

保存联系人

本课属于 Coddy Kotlin 学习旅程的“逻辑与流程”单元。第 21 课,共 63 课。

构建一个联系人簿,用于保存、查找和删除联系人,然后列出姓名并报告统计信息。一个可变映射按姓名存储一个电话号码。同一次调用中的命令共用这个映射;每次新调用都会从头开始。提供的输入代码会读取三个长度相同的列表。请在 contactBook 中实现命令循环。

val contacts = mutableMapOf<String, String>()
challenge icon

挑战

困难

完成 contactBook,其参数为 commands: List<String>、names: List<String> 和 phones: List<String>。构建一个内存中的通讯录,每次调用函数时通讯录都从空开始。三个列表长度相同,且最多包含 100 个元素。在每个索引处,commands 选择一个操作,names 和 phones 提供该操作的参数。名称是非空的小写 ASCII 单词;电话号码是非空的数字字符串,必须保持为字符串,以保留前导零。每条命令都会在返回的列表中产生一条回复。支持 PUT:保存或替换所提供名称对应的电话号码,然后回复 saved。输入只包含此步骤支持的命令。忽略的参数字符串可以是任意非空文本。

除非上文规定了更严格的范围,否则每层集合最多包含 100 个元素,整数参数和整数集合值的范围为 -1000 到 1000。用于解析的文本可能包含无效或超出范围的表示形式,具体如上所述。

返回类型为 List<String> 的值。保留提供的输入/输出代码。它每行读取一个标量参数;列表以元素数量开头,后跟各个元素;映射以条目数量开头,后跟每个键和值。嵌套列表的每一行都重复数量和元素的格式。提供的 main 会打印返回值,并在末尾输出一个换行符。列表使用 Kotlin 的标准方括号格式;不要打印额外标签。

亲手试试

fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
    // 在这里编写你的答案。
    return emptyList()
}
fun main() {
    val commandsCount = readln().toInt()
    val commands = mutableListOf<String>()
    for (i0 in 0 until commandsCount) {
        val commandsItem = readLine().orEmpty()
        commands.add(commandsItem)
    }
    val namesCount = readln().toInt()
    val names = mutableListOf<String>()
    for (i0 in 0 until namesCount) {
        val namesItem = readLine().orEmpty()
        names.add(namesItem)
    }
    val phonesCount = readln().toInt()
    val phones = mutableListOf<String>()
    for (i0 in 0 until phonesCount) {
        val phonesItem = readLine().orEmpty()
        phones.add(phonesItem)
    }
    println(contactBook(commands, names, phones))
}

逻辑与流程中的所有课

自己练习: Kotlin 在线编辑器