「夏天姐!我們兩個來囉!」菁菁跟曉欣一起進來丹提咖啡,開心地打招呼
「兩位感情越來越好了!」夏天開心的打開兩題題目: 326. Power of Three、 342. Power of Four
「之前病假讓我有些工作還沒處理好,我先處理工作,你們兩位自己試看看能不能解出來?」
「沒問題,看我跟菁菁的厲害!」
沒想到一陣子之前,寫兩個數字相加,還畏畏縮縮的曉欣,現在儼然是工程師的樣子了。
兩人一番討論之後,很快想出了第一題的解答
class Solution {
fun isPowerOfThree(n: Int) = when {
n <= 0 -> false
else -> 1162261467 % n == 0
}
}
第二題兩人似乎有點卡住,花了蠻多時間,還是沒想出好的解法。
「兩位先休息一下吧」
「先等一等!我覺得我們好像差一點點就想出來了」菁菁說
「堅持是件好事。不過,卡住的時候,如果一直鑽牛角尖下去,有時候反而會忽略很簡單的答案喔!先喝杯咖啡吧」夏天端來三杯咖啡說到。
喝了咖啡,外加一陣閒聊時間過後,兩人重新看了題目
「哎呀!我們剛剛都沒想到,用對數一下就解開了」
import kotlin.math.ceil
import kotlin.math.floor
import kotlin.math.log
class Solution {
fun isPowerOfFour(n: Int): Boolean {
if (n <= 0) {
return false
}
return (floor(log(n.toDouble(), 4.0)) == ceil(log(n.toDouble(), 4.0)))
}
}
「如何?其實很簡單對吧?」夏天笑著說。「那這題呢?」 125. Valid Palindrome
「這題跟之前的 7. Reverse Integer 很像」搭配上 10. Regular Expression Matching 對正規表示式的經驗,兩人只花一點時間,就寫出了正確解答:
class Solution {
fun isPalindrome(s: String): Boolean {
val cleanString = Regex("[^a-z0-9]")
.replace(s.toLowerCase(), "")
return cleanString == cleanString.reversed()
}
}
「你們真的太棒了!」夏天開心的說,又去買了蛋糕回來請大家吃。