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
}



京公网安备 11010502036488号