iT邦幫忙

2022 iThome 鐵人賽

DAY 12
0

為了避免思考疲勞和僵化,我和學妹討論過,不要連續做相同領域的題目。

所以做完陣列之後,選了一題要求回傳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' }
    }
}

上一篇
Day11: 線索的使用方法
下一篇
Day13: 泛用型和特化型
系列文
不解題就不能離開的房間31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言