File tree Expand file tree Collapse file tree 1 file changed +35
-7
lines changed
python/42_dynamic_programming Expand file tree Collapse file tree 1 file changed +35
-7
lines changed Original file line number Diff line number Diff line change 44
55def levenshtein_dp (s : str , t : str ) -> int :
66 m , n = len (s ), len (t )
7- table = [[0 ] * (n + 1 ) for _ in range (m + 1 )]
8- table [0 ] = [j for j in range (m + 1 )]
9- for i in range (m + 1 ):
10- table [i ][0 ] = i
11- for i in range (1 , m + 1 ):
12- for j in range (1 , n + 1 ):
13- table [i ][j ] = min (1 + table [i - 1 ][j ], 1 + table [i ][j - 1 ], int (s [i - 1 ] != t [j - 1 ]) + table [i - 1 ][j - 1 ])
7+ table = [[0 ] * (n ) for _ in range (m )]
8+
9+ for i in range (n ):
10+ if s [0 ] == t [i ]:
11+ table [0 ][i ] = i - 0
12+ elif i != 0 :
13+ table [0 ][i ] = table [0 ][i - 1 ] + 1
14+ else :
15+ table [0 ][i ] = 1
16+
17+ for i in range (m ):
18+ if s [i ] == t [0 ]:
19+ table [i ][0 ] = i - 0
20+ elif i != 0 :
21+ table [i ][0 ] = table [i - 1 ][0 ] + 1
22+ else :
23+ table [i ][0 ] = 1
24+
25+ for i in range (1 , m ):
26+ for j in range (1 , n ):
27+ table [i ][j ] = min (1 + table [i - 1 ][j ], 1 + table [i ][j - 1 ], int (s [i ] != t [j ]) + table [i - 1 ][j - 1 ])
28+
29+ print (table )
1430 return table [- 1 ][- 1 ]
1531
1632
@@ -27,5 +43,17 @@ def common_substring_dp(s: str, t: str) -> int:
2743 s = "mitcmu"
2844 t = "mtacnu"
2945
46+ print (levenshtein_dp (s , t ))
47+ print (common_substring_dp (s , t ))
48+
49+ s = "kitten"
50+ t = "sitting"
51+
52+ print (levenshtein_dp (s , t ))
53+ print (common_substring_dp (s , t ))
54+
55+ s = "flaw"
56+ t = "lawn"
57+
3058 print (levenshtein_dp (s , t ))
3159 print (common_substring_dp (s , t ))
You can’t perform that action at this time.
0 commit comments