和下面这道题雷同
剑指 Offer II 096. 字符串交织 - 掘金 (juejin.cn)
给定三个字符串 s1、s2、s3,请判断 s3 能不能由 s1 和 s2 **交织(交错) 组成。
var isInterleave = function (s1, s2, s3) {
var l1 = s1.length,
l2 = s2.length,
l3 = s3.length;
if (l1 + l2 !== l3) return false;
if (l1 === 0) return s2 === s3;
if (l2 === 0) return s1 === s3;
var dp = new Array(l3 + 1).fill(false);
dp[0] = true;
for (var i = 0; i <= l1; i++) {
for (var j = 0; j <= l2; j++) {
var p = i + j;
if (i > 0) {
dp[j] = dp[j] && s3[p - 1] === s1[i - 1];
}
if (j > 0) {
var flag1 = dp[j]
var flag2 = dp[j - 1]
var flag3 = s3[p - 1] === s2[j - 1]
dp[j] = flag1 || flag2 && flag3;
}
}
}
return dp[l2];
};
代码调试
var s1 = "aabcc",
s2 = "dbbca",
s3 = "aadbbcbcac";
console.log(isInterleave(s1, s2, s3));