Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2.
For example,
Given:
s1 = “aabcc”,
s2 = “dbbca”,
When s3 = “aadbbcbcac”, return true.
When s3 = “aadbbbaccc”, return false.
解法1: DP O(len_s1 * len_s2) Time and space
拿到题目似乎就是用dp来做,其他没有比较好的办法可以套。
那么就从小问题开始。
如果一个string是空,那么s3必须和另一个string相等。
如果用dp[i][j] 表示的是前i个字符和前j个字符组成的string可以是前(i+j)的interleave,那么就可以知道
i+j上的字符一定要么等于s1的第i个字符或者是s2的第j个字符。同时,如果这个条件满足,则就考虑
dp[i -1][j]或者dp[i][j - 1]是否为真就可以了。
|
|