题解 | #公共子串计算#

公共子串计算

https://www.nowcoder.com/practice/98dc82c094e043ccb7e0570e5342dd1b

package main

import (
    "fmt"
)

func LCS(s1 string, s2 string) int {
    var maxLength int
    size1, size2 := len(s1), len(s2)

    // dp[i][j]: 表示s1的前i个字符和s2的前j个字符的最长公共字串
    dp := make([][]int, size1 + 1)
    for i:=0; i<len(dp); i++ {
        dp[i] = make([]int, size2 + 1)
    }

    // 初始化

    // 动态转移方程
    for i:=1; i<=size1; i++ {
        for j:=1; j<=size2; j++ {
            if s1[i-1] == s2[j-1] {
                dp[i][j] = dp[i-1][j-1] + 1
                if dp[i][j] > maxLength {
                    maxLength = dp[i][j]
                }
            }
        }
    }

    return maxLength
}

func main() {
    var s1 string
    var s2 string

    fmt.Scan(&s1, &s2)

    fmt.Println(LCS(s1, s2))
}
// 本题输入为两个不带空格的字符串,所以采用:fmt.Scan(&s1, &s2)

全部评论

相关推荐

蚂蚁 基架java (n+6)*16 签字费若干
点赞 评论 收藏
分享
努力学习的小绵羊:我反倒觉得这种挺好的,给不到我想要的就别浪费大家时间了
点赞 评论 收藏
分享
11-15 17:19
湖南大学 Java
成果成果成果果:这是哪个公司的hr,这么离谱吗,我没见过用性别卡技术岗的,身边女性同学拿大厂offer的比比皆是
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务