编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
分析:该题只需要求前缀,故前缀的前面字符相同,可以考虑从每个字符串的后面开始遍历,如果不相同就退出循环,为了节省遍历长度,可以先求最小字符串长度。代码如下:
package main
import "fmt"
func main() {
str := []string{"flower", "flow", "flight"}
prefix := longestCommonPrefix(str)
fmt.Println(prefix)
str1 := []string{"dog", "racecar", "car"}
prefix1 := longestCommonPrefix(str1)
fmt.Println(prefix1)
}
func longestCommonPrefix(strs []string) string {
if len(strs) == 0 {
return ""
}
if len(strs) == 1 {
return strs[0]
}
minLength := len(strs[0])
for i := 1; i < len(strs); i++ {
if len(strs[i]) < minLength {
minLength = len(strs[i])
}
}
for i := minLength; i >= 0; i-- {
prefix := subStr(strs[0], i)
samePrefix := true
for j := 1; j < len(strs); j++ {
if prefix != subStr(strs[j], i) {
samePrefix = false
break
}
}
if samePrefix {
return prefix
}
}
return ""
}
func subStr(str string, i int) string {
var ret string
ret = string(str[0:i])
return ret
}
1389





