[
dp
string
]
BinarySearch 0054 Zipped String
Problem statement
https://binarysearch.com/problems/Zipped-String/
Solution
Equal to Leetcode 0097. Interleaving String
Complexity
Time complexity is O(mn), because we have mn states and two transactions from one state to others. Space complexity is O(mn) as well, which can be reduced to O(m + n).
Code
class Solution:
def solve(self, s1, s2, s3):
@lru_cache(None)
def dp(i, j):
if i == -1 and j == -1: return True
return (j >= 0 and dp(i, j-1) and s2[j] == s3[i+j+1]) or (i >= 0 and dp(i-1,j) and s1[i] == s3[i+j+1])
return len(s1) + len(s2) == len(s3) and dp(len(s1) - 1, len(s2) - 1)