題目連結:
題目意譯:
撰寫一個函式去找出輸入字串們的最長共同前綴。如果沒有共同的前綴,則回傳一個空字串 "" 。.
注:所有給定的輸入字串為小寫字母 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 的字元組成的字串即是所求。
此次分享到此為止,如有任何更加簡潔的想法或是有說明不清楚之地方,也煩請各位大大撥冗討論。