Mencari Kontak
Termasuk bagian Logika & Alur dalam perjalanan Kotlin di Coddy. Pelajaran 22 dari 63.
Tantangan
SulitLengkapi contactBook dengan parameter commands: List<String>, names: List<String>, phones: List<String>. Buat buku kontak dalam memori yang dimulai dalam keadaan kosong pada setiap pemanggilan fungsi. Ketiga list memiliki panjang yang sama, paling banyak 100. Pada setiap indeks, commands memilih operasi, sedangkan names dan phones menyediakan argumennya. Nama adalah kata ASCII huruf kecil yang tidak kosong; nomor telepon adalah string digit yang tidak kosong dan harus tetap berupa string agar nol di depannya tidak hilang. Setiap perintah menghasilkan satu balasan dalam list yang dikembalikan. Pertahankan semua yang kamu tulis pada langkah sebelumnya, termasuk semua perintah dan balasan sebelumnya. Dukung PUT: simpan atau ganti nomor telepon untuk nama yang diberikan, lalu balas saved. Tambahkan FIND: balas dengan nomor telepon yang tersimpan untuk nama yang diberikan, atau missing. Argumen nomor teleponnya diabaikan. Input hanya berisi perintah yang didukung pada langkah ini. String argumen yang diabaikan dapat berupa teks apa pun yang tidak kosong.
Kecuali batas yang lebih ketat dinyatakan di atas, koleksi berisi paling banyak 100 elemen pada setiap tingkat, dan argumen integer serta nilai integer dalam koleksi berada di antara -1000 dan 1000. Teks yang diberikan untuk parsing dapat mencakup representasi yang tidak valid atau di luar rentang seperti yang dijelaskan.
Kembalikan nilai bertipe List<String>. Pertahankan kode input/output yang disediakan. Kode tersebut membaca argumen skalar satu per baris; list dimulai dengan jumlah elemennya, diikuti elemen-elemennya, dan map dimulai dengan jumlah entrinya, diikuti setiap key dan value. List bersarang mengulangi format jumlah elemen dan elemen untuk setiap baris. main yang disediakan mencetak nilai yang dikembalikan, lalu satu baris baru. List menggunakan format standar Kotlin dengan tanda kurung siku; jangan cetak label tambahan.
Coba sendiri
fun contactBook(commands: List<String>, names: List<String>, phones: List<String>): List<String> {
val contacts = mutableMapOf<String, String>()
val replies = mutableListOf<String>()
for (i in commands.indices) {
val name = names[i]
when (commands[i]) {
"PUT" -> {
contacts[name] = phones[i]
replies.add("saved")
}
}
}
return replies
}
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))
}Semua pelajaran di Logika & Alur
4Koleksi Bersarang
List Berisi ListMenelusuri BarisRingkasan BarisMeratakan List BertingkatRangkuman, Baris Tempat Duduk7Alur Pemrosesan Koleksi
Transformasi dengan MapMemfilter NilaiMenguji Aturan KoleksiMengakumulasi dengan FoldRangkuman: Total yang Disetujui2Map Bagian 2
Menelusuri Entri MapKunci dan NilaiMap FrekuensiMap BersarangRingkasan: Laporan Frekuensi5Proyek: Buku Kontak
Menyimpan KontakMencari KontakLatihan sendiri: Playground Kotlin