文章目录
- 14. 最长公共前缀
- 解题思路
- Go代码
14. 最长公共前缀
14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 仅由小写英文字母组成
解题思路
最长长度最大也就是长度最短的那个字符串,所以可以先按字符串长度排序。再不断缩短最短那个字符串,寻找它与其余所有字符串的最长前缀
Go代码
func longestCommonPrefix(strs []string) string {
// 最长长度最大也就是长度最短的那个字符串,所以可以先按字符串长度排序
// 再不断缩短最短那个字符串,寻找它与其余所有字符串的最长前缀
if len(strs) == 0 {
return ""
}
sort.Slice(strs,func(i,j int)bool {
return strs[i] < strs[j]
})
res := strs[0]
// 与后续每个字符串挨个字符比较
for i := 1;i < len(strs);i++ {
for j := 0;j < len(res);j++ {
// 当前字符不相等,说明res与当前字符串的最大前缀到此为止,更新res,继续和后续字符串比较
if res[j] != strs[i][j] {
res = res[0:j]
break
}
}
}
return res
}