iT邦幫忙

2022 iThome 鐵人賽

DAY 14
0

大體說來,今天解題還算順利,但也有遇到坑的時候,比如說2114. Maximum Number of Words Found in Sentences要找最多單詞的句子。

學妹本來用的是maxOfOrNull方法,卻出現了Unresolved reference: maxOfOrNull

class Solution {
    fun mostWordsFound(sentences: Array<String>): Int {
        return sentences.maxOfOrNull {
            it.split(" ").size
        }!!
    }
}

「我很確定有這個方法的!」學妹著急的看著我。

我愣了一下,可是編譯器已經說了它不認識maxOfOrNull啊。

我想了想,之前有看到論壇上請求Leetcode升級支援的Kotlin版本的討論串,那時候看到的Kotlin版本好像是⋯⋯1.3?

好舊啊!Kotlin每半年發布一個新版本,現在已經1.7了,每次更新除了修正錯誤和增進效能以外,還會導入新方法或新結構,所以Leetcode用舊版本是為了增加難度嗎?

「Leetcode的Kotlin版本很舊,可能是之後的版本才有這個方法。妳換個寫法試試吧。」這時候也只能這樣了。山不轉,路轉;路不轉,人轉!

學妹咬了咬牙:「好吧,那我就用最基本,一定會有的forEach方法!」

class Solution {
    fun mostWordsFound(sentences: Array<String>): Int {
        var max = 0
        sentences.forEach {
            val result = it.split(" ").size
            if (result > max) {
                max = result
            }
        }
        return max
    }
}

其實如果不堅持用Array附帶的方法,也是可以用普通迴圈做到的,學妹真的不用那麼緊張。

class Solution {
    fun mostWordsFound(sentences: Array<String>): Int {
        var max = 0
        for (it in sentences) {
            val result = it.split(" ").size
            if (result > max) {
                max = result
            }
        }
        return max
    }
}

同樣的效果可以用很多種程式碼達成,就像是計算單詞數量的方法,除了用split方法分割,也可以計算空白字元的數量。計算空白字元的數量可以用迴圈按部就班計算,也可以像之前用過的方法——用replace拿掉空白,再去比較拿掉前後字串長度的差異。

越是複雜的功能,越是難以見到相同的程式碼。可以說程式碼就和作文一樣,各人有各人的風格。就像是學妹熟悉Collections,所以不太使用基本迴圈;而不擅長命名的我,則是可以不命名就不命名,喜歡anonymous的寫法。


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

尚未有邦友留言

立即登入留言