程序员

最长公共前缀

2020-06-15  本文已影响0人  yellowone

编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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()
}

上一篇下一篇

猜你喜欢

热点阅读