55561bc4创建于 2022年12月27日历史提交
function isInterleave(s1: string, s2: string, s3: string): boolean {
    const l1 = s1.length;
    const l2 = s2.length;
    const l3 = s3.length;

    if (l1 + l2 !== l3) {
        return false;
    }

    if (!s1 || !s2 || !s3) {
        return (!s1 && !s2 && !s3) || (s1 ? s1 === s3 : s2 === s3);
    }

    const seen = new Array(l2 + 1);
    seen[l2] = true;

    for (let i = l2 - 1; i >= 0; i--) {
        seen[i] = seen[i + 1] && s2[i] === s3[l1 + i];
    }

    for (let i = l1 - 1; i >= 0; i--) {
        for (let j = l2; j >= 0; j--) {
            seen[j] =
                (seen[j] && s1[i] === s3[i + j]) ||
                (j !== l2 && seen[j + 1] && s2[j] === s3[i + j]);
        }
    }
    return seen[0];
}