最长公共子序列(longest-common-subsequence)
leetcode 1143
class Solution {
public int longestCommonSubsequence ( String text1, String text2) {
int m = text1. length ( ) , n = text2. length ( ) ;
int [ ] [ ] dp = new int [ m + 1 ] [ n + 1 ] ;
for ( int i = 1 ; i <= m; i++ ) {
char c1 = text1. charAt ( i - 1 ) ;
for ( int j = 1 ; j <= n; j++ ) {
char c2 = text2. charAt ( j - 1 ) ;
if ( c1 == c2) {
dp[ i] [ j] = dp[ i - 1 ] [ j - 1 ] + 1 ;
} else {
dp[ i] [ j] = Math . max ( dp[ i - 1 ] [ j] , dp[ i] [ j - 1 ] ) ;
}
}
}
return dp[ m] [ n] ;
}
}
作者:LeetCode - Solution
链接:https: / / leetcode- cn. com/ problems/ longest- common- subsequence/ solution/ zui- chang- gong- gong- zi- xu- lie- by- leetcod- y7u0/
来源:力扣(LeetCode )
最长公共子串(longest-common-substring)
leetcode 718
class Solution {
public int longestCommonSubstring ( int [ ] A , int [ ] B ) {
int n = A . length;
int m = B . length;
int max = 0 ;
int [ ] [ ] dp = new int [ n + 1 ] [ m + 1 ] ;
for ( int i= 1 ; i<= n; i++ ) {
for ( int j= 1 ; j<= m; j++ ) {
if ( A [ i - 1 ] == B [ j - 1 ] ) {
dp[ i] [ j] = dp[ i - 1 ] [ j - 1 ] + 1 ;
} else {
dp[ i] [ j] = 0 ;
}
max = Math . max ( max, dp[ i] [ j] ) ;
}
}
return max;
}
}
作者:Booooo_
链接:https: / / leetcode- cn. com/ problems/ maximum- length- of- repeated- subarray/ solution/ zui- chang- zhong- fu- zi- shu- zu- dong- tai- gu- 91 zl/
来源:力扣(LeetCode )
动态规划 最长公共子序列 过程图解
动态规划解最长公共子序列(LCS)(附详细填表过程)
从优化到再优化,最长公共子串