递归-暴力javascript
思路:一个字符一个字符进行比较。java
/** * @param {string} s1 * @param {string} s2 * @param {string} s3 * @return {boolean} */ var isInterleave = function(s1, s2, s3) { const n = s1.length, m = s2.length; if (n + m != s3.length) { return false; } const compare = (i, j, k) => { if (k == s3.length) { return true; } let res = false; if (i < n && s1[i] == s3[k]) { res = compare(i + 1, j, k + 1); } // 注意这里可能出现(i指向和j指向的字符同样的状况,这个时候咱们不能让下面这条递归执行),这种状况res确定是true,因此咱们让res = res || compare(i,j+1,k+1),直接返回 true 而不执行 compare(i,j+1,k+1) if (j < m && s2[j] == s3[k]) { res = res || compare(i, j + 1, k + 1); } return res; } return compare(0, 0, 0); };
知乎:叄贰壹web
简书:带只拖鞋去流浪svg
关注我,带你一块儿写bugspa
warning :未经受权,不得转载3d
有问题的小伙伴请在下方留言,喜欢就点个赞吧code