Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string “”.
在一组给出的字符串里面,找出最长的相同前缀。如果没有相同的前缀,返回""
解法
解法1
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
| func longestCommonPrefix(strs []string) string {
if len(strs) == 0 {
return ""
}
if len(strs) == 1 {
return strs[0]
}
n := 0
end := false
for !end {
for i := 0; i < len(strs)-1; i++ {
if n == len(strs[i]) || n == len(strs[i+1]) {
end = true
break
}
if strs[i][n] != strs[i+1][n] {
end = true
break
}
}
if !end {
n++
}
}
return strs[0][:n]
}
|
解法2
1
2
3
4
5
6
7
8
9
10
11
12
| func longestCommonPrefix2(strs []string) string {
if strs == nil || len(strs) == 0 {
return ""
}
pre := strs[0]
for _, v := range strs {
for !strings.HasPrefix(v, pre) {
pre = pre[:len(pre)-1]
}
}
return pre
}
|
总结
- 解法2里面,使用了golang的strings自带的判断前缀的方法