题解 | #最长公共子串#

最长公共子串

http://www.nowcoder.com/practice/f33f5adc55f444baa0e0ca87ad8a6aac

package main

func LCS( str1 string ,  str2 string ) string {
    // write code here
    m, n := len(str1), len(str2)
    res, end := 0, 0
    dp := make([][]int, m+1)
    
    for i := range dp {
        dp[i] = make([]int, n+1)
    }
    
    for i := 1; i <= m; i++ {
        for j := 1; j <= n; j++ {
            if str1[i-1] == str2[j-1] {
                dp[i][j] = dp[i-1][j-1] +1
            } else {
                dp[i][j] = 0
            }
            
            if dp[i][j] > res {
                res = dp[i][j]
                end = i
            }
        }
    }
    if res == 0 {
        return ""
    }
    return str1[end - res: end]
}

全部评论

相关推荐

LuvSran:是人我吃。老师就是学校呆久了,就业方面啥都不懂,还自以为是为了我们就业好。我学校就一破双非,计科入行率10%都没有,某老师还天天点名,说是出勤率抬头率前排率高了,华为什么的大厂就会来,我们就是不好好上课才没有厂来招。太搞笑了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务