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 ] ;