题目
给定一组字符串,找到这组字符串中的最长公共前缀字符串。
解析
两种方式
第一种,字符串两两比较,依次找出公共前缀。
第二种,每个字符串取第一个字符
很明显,大多数情况下,第二种要比第一种效率高,因为可能后边字符串位数不够,导致前边白白比较浪费。
更一般的,我们可以先得到最短的那个字符串,然后对所有字符串按字符比较。
伪码
flag = flags(strs)
for i<len(flag)
for j < len(strs)
if flag[i] != strs[j][i]
goto end
rst = flag[:i]
代码
func longestCommonPrefix(strs []string) string {
var Len int = 1<<63-1
var idx int
for i:=0; i<len(strs); i++ {
if len(strs[i]) < Len {
Len = len(strs[i])
idx = i
}
}
var flag string = strs[idx]
var min int = 0
for ;min < Len; min++{
for i:=0; i< len(strs); i++ {
if flag[min] != strs[i][min] {
goto end
}
}
}
end:
return flag[:min]
}
网友评论