Skip to content

Commit a0b6cc6

Browse files
Time: 826 ms (55.33%), Space: 18.6 MB (63.90%) - LeetHub
1 parent a781db2 commit a0b6cc6

File tree

1 file changed

+37
-18
lines changed

1 file changed

+37
-18
lines changed
Lines changed: 37 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -1,23 +1,42 @@
11
class Solution:
22
def minimumDeleteSum(self, s1: str, s2: str) -> int:
3-
def helper(i, j):
4-
if i==n:
5-
return sum(ord(s2[k]) for k in range(j, m))
6-
if j==m:
7-
return sum(ord(s1[k]) for k in range(i, n))
3+
n, m = len(s1), len(s2)
4+
dp = [[0]*(m+1) for _ in range(n+1)]
5+
6+
for i in range(n):
7+
dp[i][m] = sum(ord(s1[k]) for k in range(i, n))
8+
for j in range(m):
9+
dp[n][j] = sum(ord(s2[k]) for k in range(j, m))
10+
for i in range(n-1, -1, -1):
11+
for j in range(m-1, -1, -1):
12+
if s1[i] == s2[j]:
13+
dp[i][j] = dp[i+1][j+1]
14+
else:
15+
rems1 = ord(s1[i])+dp[i+1][j]
16+
rems2 = ord(s2[j])+dp[i][j+1]
17+
dp[i][j] = min(rems1, rems2)
18+
return dp[0][0]
19+
20+
21+
22+
# def helper(i, j):
23+
# if i==n:
24+
# return sum(ord(s2[k]) for k in range(j, m))
25+
# if j==m:
26+
# return sum(ord(s1[k]) for k in range(i, n))
827

9-
if dp[i][j] != -1:
10-
return dp[i][j]
28+
# if dp[i][j] != -1:
29+
# return dp[i][j]
1130

12-
if s1[i] == s2[j]:
13-
dp[i][j] = helper(i+1, j+1)
14-
return dp[i][j]
15-
else:
16-
rems1 = ord(s1[i])+helper(i+1, j)
17-
rems2 = ord(s2[j])+helper(i, j+1)
18-
dp[i][j] = min(rems1, rems2)
19-
return dp[i][j]
31+
# if s1[i] == s2[j]:
32+
# dp[i][j] = helper(i+1, j+1)
33+
# return dp[i][j]
34+
# else:
35+
# rems1 = ord(s1[i])+helper(i+1, j)
36+
# rems2 = ord(s2[j])+helper(i, j+1)
37+
# dp[i][j] = min(rems1, rems2)
38+
# return dp[i][j]
2039

21-
n, m = len(s1), len(s2)
22-
dp = [[-1]*m for _ in range(n)]
23-
return helper(0, 0)
40+
# n, m = len(s1), len(s2)
41+
# dp = [[-1]*m for _ in range(n)]
42+
# return helper(0, 0)

0 commit comments

Comments
 (0)