
Longest Common Prefix
要求比對字串陣列中, 每一個字串中有重複的部分, 並且把重複的部分回傳出去
解題脈絡
就把每個字有重複的地方存下來, 然後再去比對下一個字
寫法
func longestCommonPrefix(strs []string) string {
if len(strs) == 1 {
return strs[0]
}
temp := ""
for i := 1; i < len(strs); i++ {
hay := strs[0]
if temp != "" {
hay = temp
temp = ""
}
for k := 0; k < len(hay); k++ {
if k >= len(strs[i]) {
continue
}
if hay[k] != strs[i][k] {
break
}
temp = fmt.Sprintf("%v%v", temp, string(hay[k]))
}
if temp == "" {
return ""
}
}
return temp
}
心得
自己的解法, 把太多要比對的東西放在記憶體中, 不僅跑得比較慢, 消耗的資源也較多, 看了較佳的解法後, 發現我的思路還是會要把整個陣列跑完為起點, 但是只要第二個字元比對不到, 其實就可以回傳了, 果然還是要多想想…