classSolution:defisInterleave(self, s1:str, s2:str, s3:str)->bool:
m, n =len(s1),len(s2)iflen(s3)!= m + n:returnFalseif m ==0:return s3 == s2
if n ==0:return s3 == s1
dp =[Falsefor _ inrange(n +1)]
dp[0]=Truefor i inrange(0, m +1):for j inrange(0, n +1):if i >0:
dp[j]=(s1[i-1]== s3[i+j-1]and dp[j])if j >0:
dp[j]= dp[j]or(s2[j-1]== s3[i+j-1]and dp[j-1])return dp[-1]