Example 1: longest common subsequence
class Solution: def longestCommonSubsequence(self, text1: str, text2: str) -> int: """ text1: horizontally text2: vertically """ dp = [[0 for _ in range(len(text1)+1)] for _ in range(len(text2)+1)] for row in range(1, len(text2)+1): for col in range(1, len(text1)+1): if text2[row-1]==text1[col-1]: dp[row][col] = 1+ dp[row-1][col-1] else: dp[row][col] = max(dp[row-1][col], dp[row][col-1]) return dp[len(text2)][len(text1)]
Example 2: longest common subsequence
int maxSubsequenceSubstring(char x[], char y[], int n, int m) { int dp[MAX][MAX]; for (int i = 0; i <= m; i++) for (int j = 0; j <= n; j++) dp[i][j] = 0; for (int i = 1; i <= m; i++) { for (int j = 1; j <= n; j++) { if (x[j - 1] == y[i - 1]) dp[i][j] = 1 + dp[i - 1][j - 1]; else dp[i][j] = dp[i][j - 1]; } } int ans = 0; for (int i = 1; i <= m; i++) ans = max(ans, dp[i][n]); return ans; }
Comments
Post a Comment