Interleaving String

06/18/2021

Basic Idea

这道题目其实就是看s1 s2 两个字符串在不改变各自内部顺序的情况下交叉在一起能不能形成s3。仔细观察的话就会发现当我们固定好s1和s2中的两个index i j 的时候,只要我们确定 s1[0:i]s2[0:j] 能够通过交叉形成 s3[0:i+j] , 那么在这之后的部分就变成了和整个问题一样的子问题,于是我们就可以使用DP的思路来解决,而 i j 就可以唯一地表示一个子问题。

这道题我们可以使用DFS with cache和DP两个解法来做,时间复杂度 O(MN),通过优化DP也可以做到O(min{M,N}) 的时间。

Java Code

DFS 解法

DP 解法

Last updated