package main

import (
    "fmt"
)


func maxLength(a1,a2 string)int{
    var maxLen int
    
    m,n := len(a1),len(a2)

    // 初始化二维数组
    dp := make([][]int, m+1)
    for i:= 0; i< m+1;i++{
        dp[i] = make([]int, n+1)
    }

    // for i:=0; i< n+1;i++{
    //     dp[0][i] = 0
    // }

    for i:= 1;i <= m;i++{
        for j:=1;j<=n;j++{
           if a1[i-1] == a2[j-1]{
                dp[i][j] = dp[i-1][j-1] + 1
           }else{
                dp[i][j] = 0
           }

           if dp[i][j] > maxLen{
                maxLen = dp[i][j]
           }
        }
    }
    return maxLen

}

func main() {
    var a1 string
    var a2 string
    fmt.Scan(&a1)
    fmt.Scan(&a2)

    fmt.Println(maxLength(a1,a2))
}

最长公共子串 => 动态规划 => 二维数组

if str[i-1] == str[j-1]{

db[i][j] = db[i-1][j-1] + 1

}