頻度マップ
CoddyのKotlinジャーニー「ロジックとフロー」セクションの一部。レッスン 8/63。
頻度マップは、各項目が何回出現するかを格納します。各入力について、現在のカウントまたは 0 を読み取り、1 増やした値を書き戻します。これにより、安全な検索、変更可能な代入、反復処理を組み合わせます。
mainの内部:
val counts = mutableMapOf<String, Int>()
for (word in listOf("red", "blue", "red")) {
counts[word] = (counts[word] ?: 0) + 1
}
println(counts["red"])red のカウントは 1 として挿入され、その後 2 に更新されます。
不足している頻度は、現在の出現回数が加算される前はゼロから始まります。
チャレンジ
中級words: List<String>、target: Stringをパラメータとして、wordFrequencyを完成させてください。頻度マップを構築し、targetが何回出現するかを返してください。一致判定では大文字と小文字を区別します。
上記でより厳しい上限が示されていない限り、コレクションは各階層で最大100個の要素を含み、整数引数および整数コレクション値は-1000から1000の範囲です。パース対象のテキストには、説明されているとおり、無効な形式や範囲外の表現が含まれる場合があります。
型Intの値を返してください。提供された入力/出力コードはそのまま使用してください。スカラー引数は1行に1つずつ読み取られます。リストは要素数に続いて各要素が始まり、マップはエントリ数に続いて各キーと値が続きます。ネストされたリストでは、各行について要素数と要素の形式が繰り返されます。提供されたmainは、返り値の後に改行を1つ出力します。リストにはKotlin標準の角括弧形式を使用し、追加のラベルは出力しないでください。
自分で試してみよう
fun wordFrequency(words: List<String>, target: String): Int {
// ここに解答を書いてください。
return 0
}
fun main() {
val wordsCount = readln().toInt()
val words = mutableListOf<String>()
for (i0 in 0 until wordsCount) {
val wordsItem = readLine().orEmpty()
words.add(wordsItem)
}
val target = readLine().orEmpty()
println(wordFrequency(words, target))
}このレッスンには短いクイズがあります。レッスンを始めて解答し、進捗を記録しましょう。
ロジックとフローのすべてのレッスン
自分で練習してみよう: Kotlinプレイグラウンド