切換
舊版
前往
大廳
主題

LeetCode - 14. Longest Common Prefix 解題心得

Not In My Back Yard | 2020-07-27 00:00:13 | 巴幣 0 | 人氣 155

題目連結:


題目意譯:
撰寫一個函式去找出輸入字串們的最長共同前綴。如果沒有共同的前綴,則回傳一個空字串 "" 。.

注:所有給定的輸入字串為小寫字母 a ~ z 。



範例測資:
範例 1:
輸入: ["flower","flow","flight"]
輸出: "fl"

範例 2:
輸入: ["dog","racecar","car"]
輸出: ""
解釋: 這些輸入字串沒有共同的前綴。


解題思維:
由於給定的是一個列表(List),而列表裡包著的才是給定的字串。因此如果列表為空也要處理,在這情況下應回傳 "" 。而如果列表只有一個元素,也就是只有一個字串的話,就回傳該字串。

剩下的有幾個作法:
第一個較為直觀,先將第一個字串當作共同前綴 P,然後與其他的字串去看前綴實際上到字串 P 的哪裡,就將 P 更新成新的前綴。最後一個字串判完後的字串 P 就是所有字串的最長共同前綴。

第二個作法則是先從索引值 i = 0 開始,然後跑過每個字串看在索引值 i 的位置是不是都是相同的(都等於第一個字串的第 i 個字元等)。就這樣一直增加 i 直到有字串的字元跟別人不一樣,或是超過該字串的長度就停下來,此時隨便抓一個字串取前 i 個字元,即第 0 個字元到第 i - 1 的字元組成的字串即是所求。




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

創作回應

更多創作