為了避免思考疲勞和僵化,我和學妹討論過,不要連續做相同領域的題目。
所以做完陣列之後,選了一題要求回傳List的題目,412. Fizz Buzz要根據索引值來設定不同內容,特殊的是,和平常習慣的不同,索引值從1開始。
用迴圈加新成員的方式在哪個程式語言都沒什麼差異,只是用IntRange來表達範圍比用條件判斷美觀。
class Solution {
fun fizzBuzz(n: Int): List<String> {
val result = mutableListOf<String>()
for (it in 1..n) {
result.add(
when {
it % 15 == 0 -> "FizzBuzz"
it % 3 == 0 -> "Fizz"
it % 5 == 0 -> "Buzz"
else-> "$it"
}
)
}
return result
}
}
而學妹提出另一種方式,List既然沒有後續更改內容的需求,可以直接用immutableList初始化。
class Solution {
fun fizzBuzz(n: Int): List<String> {
return List(n) {
val indexed = it + 1
when {
indexed % 15 == 0 -> "FizzBuzz"
indexed % 3 == 0 -> "Fizz"
indexed % 5 == 0 -> "Buzz"
else-> "$indexed"
}
}
}
}
因為兩個都通過測試,也無需爭執誰比較好,乾脆兩個都送出去。
早上吃多一點也是沒問題的。
接下來是字串問題,657. Robot Return to Origin問機器人按照字串裡的命令會不會回到原點。
簡單來說,就是確認相反動作的數量是不是相同。
class Solution {
fun judgeCircle(moves: String): Boolean {
return moves.count { it == 'R' } == moves.count { it == 'L' } && moves.count { it == 'U' } == moves.count { it == 'D' }
}
}