美文网首页程序员
最长公共前缀

最长公共前缀

作者: yellowone | 来源:发表于2020-06-15 18:12 被阅读0次

    编写一个函数来查找字符串数组中的最长公共前缀。
    如果不存在公共前缀,返回空字符串 ""。
    示例 1:
    输入: ["flower","flow","flight"]
    输出: "fl"
    示例 2:
    输入: ["dog","racecar","car"]
    输出: ""
    解释: 输入不存在公共前缀。
    说明:
    所有输入只包含小写字母 a-z 。

    思路很简单,一个index去记录比较到了第几位,一位一位比较过去,减少比较次数,用strings.Builder{}弄个缓存区减少字符串的修改耗时。

    package main
    
    import (
        "fmt"
        "strings"
    )
    
    func main() {
        fmt.Printf("%+v\n",longestCommonPrefix([]string{"dog","racecar","car"}))
    }
    
    func longestCommonPrefix(strs []string) string {
        if len(strs) <= 0 {
            return ""
        }
        index := 0
        result := strings.Builder{}
        for {
            letter := ""
            for _, str := range strs {
                if len(str) <= index {
                    letter = ""
                    break
                }
                if len(letter) <= 0 {
                    letter = str[index : index+1]
                    continue
                }
                if str[index:index+1] != letter {
                    letter = ""
                    break
                }
            }
            index ++
            if len(letter) <= 0 {
                break
            }
            result.WriteString(letter)
        }
        return result.String()
    }
    
    

    相关文章

      网友评论

        本文标题:最长公共前缀

        本文链接:https://www.haomeiwen.com/subject/wuuhxktx.html