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 列表