题解 | #最长公共前缀#

最长公共前缀

http://www.nowcoder.com/practice/28eb3175488f4434a4a6207f6f484f47


/**
  * 
  * @param strs string字符串一维数组 
  * @return string字符串
*/
func longestCommonPrefix( strs []string ) string {
    if len(strs) == 0 {return ""}
    var lcp func(int, int) string
    lcp = func (start int, end int) string {
        if start == end {
            return strs[start]
        }
        mid := start + (end-start)/2
        lcpLeft, lcpRight := lcp(start, mid), lcp(mid+1, end)
        minLength := min(len(lcpLeft), len(lcpRight))
        for i := 0; i < minLength; i++ {
            if lcpLeft[i] != lcpRight[i] {
                return lcpLeft[:i]
            }
        }
        return lcpLeft[:minLength]
    }
    return lcp(0, len(strs) - 1)
}
func min(a, b int) int {
    if a < b {
        return a
    }
    return b
}
全部评论

相关推荐

头像
11-06 10:58
已编辑
门头沟学院 嵌入式工程师
双非25想找富婆不想打工:哦,这该死的伦敦腔,我敢打赌,你简直是个天才,如果我有offer的话,我一定用offer狠狠的打在你的脸上
点赞 评论 收藏
分享
Noob1024:一笔传三代,人走笔还在
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务