class Solution:
def isInterleave(self, s1: str, s2: str, s3: str) -> bool:
dp = []
if len(s1) + len(s2) != len(s3):
return False
for i in range(len(s1)+1):
a = []
for j in range(len(s2)+1):
a.append(-1)
dp.append(a)
def trav(s1, s2, s3, ptr1, ptr2, ptr3):
if ptr3 == len(s3):
return True
if dp[ptr1][ptr2] != -1:
return dp[ptr1][ptr2]
a =b= False
if ptr1 != len(s1) and s1[ptr1] == s3[ptr3]:
a = trav(s1, s2, s3, ptr1+1, ptr2, ptr3 + 1)
if ptr2 != len(s2) and s2[ptr2] == s3[ptr3]:
b = trav(s1, s2, s3, ptr1, ptr2 + 1, ptr3 + 1)
dp[ptr1][ptr2] = a or b
return dp[ptr1][ptr2]
return trav(s1, s2, s3, 0, 0, 0)
320A - Magic Numbers | 1658A - Marin and Photoshoot |
514A - Chewbaсca and Number | 382A - Ksenia and Pan Scales |
734B - Anton and Digits | 1080A - Petya and Origami |
1642D - Repetitions Decoding | 1440A - Buy the String |
1658F - Juju and Binary String | 478A - Initial Bet |
981A - Antipalindrome | 365A - Good Number |
1204B - Mislove Has Lost an Array | 1409D - Decrease the Sum of Digits |
1476E - Pattern Matching | 1107A - Digits Sequence Dividing |
1348A - Phoenix and Balance | 1343B - Balanced Array |
1186A - Vus the Cossack and a Contest | 1494A - ABC String |
1606A - AB Balance | 1658C - Shinju and the Lost Permutation |
1547C - Pair Programming | 550A - Two Substrings |
797B - Odd sum | 1093A - Dice Rolling |
1360B - Honest Coach | 1399C - Boats Competition |
1609C - Complex Market Analysis | 1657E - Star MST |