LeetCode - 最长公共前缀 - Golang

邹友 · · 977 次点击 · · 开始浏览    
这是一个创建于 的文章,其中的信息可能已经有所发展或是发生改变。

题目:编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""
示例 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
}

有疑问加站长微信联系(非本文作者)

本文来自:Segmentfault

感谢作者:邹友

查看原文:LeetCode - 最长公共前缀 - Golang

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

977 次点击  
加入收藏 微博
暂无回复
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传