Recca Chao 的 gitHub page

推廣網站開發,包含 Laravel 和 Kotlin 後端撰寫、自動化測試、讀書心得等。Taiwan Kotlin User Group 管理員。

View on GitHub

Kotlin Leetcode - 1689. Partitioning Into Minimum Number Of Deci-Binary Numbers

題目連接

class Solution {
    fun minPartitions(n: String): Int {

    }
}

解題思路

這一題考的是對字串的處理

透過將字串當作陣列處理的方式

我們可以很簡單的得到解答


要注意的是

如果我們嘗試將字元直接 toInt()

會得到對應的 ascii 值

所以要先 toString() 轉換成字串後

再進行 toInt()


如果想用 reduce 的方式

則要先將輸入字串歸約(reduce)成一個字元

之後再將該字元轉換成數字

Kotlin 參考解答

forEach 參考解法如下

class Solution {
    fun minPartitions(n: String): Int {
        var result = 0
        n.forEach {
            result = maxOf(result, it.toString().toInt())
        }
        return result
    }
}

這邊的 it.toString().toInt() 可以改寫成 it - '0'

class Solution {
    fun minPartitions(n: String): Int {
        var result = 0
        n.forEach {
            result = maxOf(result, it - '0')
        }
        return result
    }
}

Math.max 參考解法如下

class Solution {
    fun minPartitions(n: String): Int {
        var result = 0
        n.forEach {
            result = Math.max(result, it.toString().toInt())
        }
        return result
    }
}

reduce 的方式,參考解法如下

class Solution {
    fun minPartitions(n: String): Int = n.reduce { result, ele -> 
        Math.max(result.toInt(), ele.toInt()).toChar()
    }.toString().toInt()
}

回到 leetcode 列表