14. Longest Common Prefix

2022-03-15  本文已影响0人  sarto

题目

给定一组字符串,找到这组字符串中的最长公共前缀字符串。

解析

两种方式
第一种,字符串两两比较,依次找出公共前缀。
第二种,每个字符串取第一个字符
很明显,大多数情况下,第二种要比第一种效率高,因为可能后边字符串位数不够,导致前边白白比较浪费。
更一般的,我们可以先得到最短的那个字符串,然后对所有字符串按字符比较。

伪码

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]
}
上一篇 下一篇

猜你喜欢

热点阅读