完成「最长公共前缀」
parent
03b3818f6a
commit
acf3bb1677
|
|
@ -0,0 +1,31 @@
|
||||||
|
package leetcode
|
||||||
|
|
||||||
|
func longestCommonPrefix(strs []string) string {
|
||||||
|
if len(strs) == 0 {
|
||||||
|
return ""
|
||||||
|
}
|
||||||
|
if len(strs) == 1 {
|
||||||
|
return strs[0]
|
||||||
|
}
|
||||||
|
var index int
|
||||||
|
first := strs[0]
|
||||||
|
secList := strs[1:]
|
||||||
|
max := len(first)
|
||||||
|
for _, str := range secList {
|
||||||
|
l := len(str)
|
||||||
|
if l < max {
|
||||||
|
max = l
|
||||||
|
}
|
||||||
|
}
|
||||||
|
OUTLOOP:
|
||||||
|
for i := 0; i < max; i++ {
|
||||||
|
c := first[i : i+1]
|
||||||
|
for _, str := range secList {
|
||||||
|
if str[i:i+1] != c {
|
||||||
|
break OUTLOOP
|
||||||
|
}
|
||||||
|
}
|
||||||
|
index = i + 1
|
||||||
|
}
|
||||||
|
return first[:index]
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,33 @@
|
||||||
|
package leetcode
|
||||||
|
|
||||||
|
import (
|
||||||
|
"testing"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestLongestCommonPrefix(t *testing.T) {
|
||||||
|
qsts := []question{
|
||||||
|
question{
|
||||||
|
Q: []string{},
|
||||||
|
A: "",
|
||||||
|
},
|
||||||
|
question{
|
||||||
|
Q: []string{"abc"},
|
||||||
|
A: "abc",
|
||||||
|
},
|
||||||
|
question{
|
||||||
|
A: "fl",
|
||||||
|
Q: []string{"flower", "flow", "flight"},
|
||||||
|
},
|
||||||
|
question{
|
||||||
|
A: "",
|
||||||
|
Q: []string{"dog", "racecar", "car"},
|
||||||
|
},
|
||||||
|
}
|
||||||
|
for _, q := range qsts {
|
||||||
|
qst := q.Q.([]string)
|
||||||
|
res := q.A.(string)
|
||||||
|
if r := longestCommonPrefix(qst); r != res {
|
||||||
|
t.Fatalf("quest is: %+v, except result is: %v, but exec result is: %v", qst, res, r)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
package leetcode
|
||||||
|
|
||||||
|
type question struct {
|
||||||
|
Q interface{}
|
||||||
|
A interface{}
|
||||||
|
}
|
||||||
Loading…
Reference in New Issue