Minimum ASCII Delete Sum for Two Strings LeetCode solution in Python
1# Runtime: 4020 ms (Top 5.03%) | Memory: 205.5 MB (Top 14.36%)2class Solution:3def minimumDeleteSum(self, s1: str, s2: str) -> int:4m, n, lookup = len(s1), len(s2), {}56def fun(i, j):7if (i, j) in lookup:8return lookup[(i, j)]9if i < 0:10return sum([ord(char) for char in s2[: j + 1]])11if j < 0:12return sum([ord(char) for char in s1[: i + 1]])13if s1[i] == s2[j]:14res = fun(i - 1, j - 1)15else:16res = min(ord(s1[i]) + fun(i - 1, j), ord(s2[j]) + fun(i, j - 1))17lookup[(i, j)] = res18return lookup[(i, j)]1920return fun(m - 1, n - 1)