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
}