题目:编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
基于Golang的代码实现如下:
func longestCommonPrefix(strs []string) string {
// 定义返回值
var s string
// 首先找到最短的字符串作为基准
tag := shortest(strs)
// 为空直接返回
if tag == "" {
return ""
}
// 对基准由长到短依次判断
for i := 0; i < len(tag); i++ {
// 定义基准的指定长度为返回值
s = tag[0 : len(tag)-i]
// 遍历数组中每个字符串,判断其指定长度下是否和基准一致
for _, str := range strs {
// 找到不一致的则清空返回值,退出循环,进行下一个长度的判断
if s != str[0:len(s)] {
s = ""
break
}
}
// 如果上面循环全部通过,说明某一长度下所有字符串都满足,则直接返回
if s != "" {
return s
}
}
return s
}
// 找到最短的字符串
func shortest(strs []string) string {
s := ""
for _, str := range strs {
if str == "" {
return ""
}
if s == "" || len(str) < len(s) {
s = str
}
}
return s
}
有疑问加站长微信联系(非本文作者)