「兩位這幾天,又解了哪些題目呀?」
學著讓曉欣和菁菁自己找題目之後,夏天變得輕鬆很多,只需要幫忙看一下兩人解題的答案即可。
曉欣和菁菁也很老實的努力寫 leetcode 題目,並沒因為夏天沒有給兩位題目,就開始怠惰起來。
「夏天姐,來幫我們看看這些題目寫得怎樣」
2114. Maximum Number of Words Found in Sentences
class Solution {
fun mostWordsFound(sentences: Array<String>): Int {
var max = 0
sentences.forEach {
var k = 0
it.forEach { if (it == ' ') k++ }
if (k > max) max = k
}
return max + 1
}
}
「很不錯呀!我自己當初是這樣寫」
class Solution {
fun mostWordsFound(sentences: Array<String>) =
sentences.maxOfOrNull {
it.split(" ").size
} ?: 0
}
「喔——用 maxOfOrNull()
簡潔多了。那這一題呢?」
2011. Final Value of Variable After Performing Operations
class Solution {
fun finalValueAfterOperations(A: Array<String>) =
2 * A.filter{ it == "X++" || it == "++X" }.size - A.size
}
「喔!我以為我寫的答案已經很簡短,不過你們寫得比我當初要簡潔耶!」夏天看了一下,驚訝的說
class Solution {
fun finalValueAfterOperations(A: Array<String>) =
(A.filter{ it == "X++" || it == "++X" }.size) - (A.size - A.filter{ it == "X++" || it == "++X" }.size)
}
「嘿嘿—總是不能輸給夏天姐呀!」菁菁調皮的說
看到程式能力大幅長進,又默契十足的兩位,夏天覺得有點不服氣,但是也有一點驕傲。
「還有這題!」隨著時間過去,曉欣的程式能力越來越好,自信也隨之提高了。
2160. Minimum Sum of Four Digit Number After Splitting Digits
class Solution {
fun minimumSum(num: Int): Int {
val digits = IntArray(4)
var n = num
for (i in 0..3) {
digits[i] = n % 10
n /= 10
}
digits.sort()
return digits[0] * 10 + digits[2]
+ digits[1] * 10 + digits[3]
}
}
「曉欣很不錯耶!竟然還使用了 /=
。看來平時有好好的練習寫程式喔!」
「對呀!我都有好好練習 Kata 和寫 Kotlin Koans 喔!」曉欣充滿自信的回答。「而且現在我對陣列相關的題目,寫起來都很快就能做出來了」
1920. Build Array from Permutation
class Solution {
fun buildArray(nums: IntArray): IntArray {
val ans = MutableList(nums.size) { 0 }
nums.forEachIndexed { i, num -> ans[i] = nums[nums[i]] }
return ans.toIntArray()
}
}
「如何?這段時間內,有沒有感覺 Kotlin 是個很直觀的語言?」
「有呀!撰寫時每次有想要做到的事情,都可以很容易地搜到某個很直觀的作法。Kotlin 真的是蠻容易學習的語言!」
「而且還有很多方便的工具,像是上次提到的 scope function,回去研究了一下,真是太好用了。」
「很高興你們學得這麼開心,另外要記得好好的更新自己的 github 呀」