前往
大廳
主題

LeetCode - 2437. Number of Valid Clock Times 解題心得

Not In My Back Yard | 2023-09-01 12:00:09 | 巴幣 0 | 人氣 100

題目連結:


題目意譯:
你被給定一個長度 5 且名為 time 的字串,代表著顯示在一個數位時鐘上的當前時間且格式為 "hh:mm"。最早可能的時間為 "00:00" 而最晚的時間為 "23:59"。

在字串 time 中,以 ? 表示的數字是未知數字,且必須被替換成一個位於 0 到 9 之間的數字。

回傳一整數 answer,其代表著把每個 ? 替換成介於 0 到 9 之間的數字後有多少時鐘時間是合法的。

限制:
time 為一個長度為 5 的合法字串,其格式為 "hh:mm"。
"00" ≦ hh ≦ "23"
"00" ≦ mm ≦ "59"
有些數字可能被替換成 '?',而必須替換回介於 0 到 9 之間的數字。



範例測資:
範例 1:
輸入: time = "?5:00"
輸出: 2
解釋: 我們可以把 ? 替換成 0 或是 1,產生 "05:00" 或 "15:00"。注意到我們不能將其替換成一個 2,由於 "25:00" 是不合法的。我們總計有兩種選擇。

範例 2:
輸入: time = "0?:0?"
輸出: 100
解釋: 每個 ? 可以被替換成 0 到 9 中任意的數字,所以我們總計有 100 種選擇。

範例 3:
輸入: time = "??:??"
輸出: 1440
解釋: 小時的部分有 24 種選擇,而分鐘的部分則有 60 種選擇。總計,我們有 24 × 60 = 1440 種選擇。


解題思維:
各自窮舉小時和分鐘兩部分各自可能的選擇數即可。也就是說,對於小時部分我們就一個一個檢查 "00" 到 "23" 這 24 個選擇中哪些可以是從 time 前兩個字元得來;而對於分鐘部分,則一個一個檢查 "00" 到 "59" 這 60 個選擇哪些是可以從 time 結尾兩個字元得來。

最後把兩個部分各自的選擇數相乘即為所求。




此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。

創作回應

更多創作