Javascript 代码战争/合并字符串检查器

Javascript 代码战争/合并字符串检查器,javascript,arrays,string,algorithm,sorting,Javascript,Arrays,String,Algorithm,Sorting,下一个挑战是: 在一次求职面试中,你被要求编写一个算法来检查给定的字符串s是否可以由另外两个字符串part1和part2组成。 限制是第1部分和第2部分中的字符顺序与s中的相同。 面试官给你举了下面的例子,并告诉你从给定的测试用例中找出剩下的部分 我做错了什么?为什么它会失败呢 我写了两个不同的脚本,但它们都不适用于某些测试用例 函数isMerge(s,第1部分,第2部分){ var sArr=s.分割(“”); var part1Arr=part1.分割(“”); var part2Arr=

下一个挑战是:

在一次求职面试中,你被要求编写一个算法来检查给定的字符串s是否可以由另外两个字符串part1和part2组成。 限制是第1部分和第2部分中的字符顺序与s中的相同。 面试官给你举了下面的例子,并告诉你从给定的测试用例中找出剩下的部分

我做错了什么?为什么它会失败呢

我写了两个不同的脚本,但它们都不适用于某些测试用例

函数isMerge(s,第1部分,第2部分){
var sArr=s.分割(“”);
var part1Arr=part1.分割(“”);
var part2Arr=part2.分割(“”);
var tempArr=新数组(sArr.length);
功能比较阵列(arr1、arr2){
var计数=0;
对于(变量i=0;i警报(isMerge(‘代码战争’、‘cdw’、‘oears’)您可以试试下面的方法吗

function isMerge(s, part1, part2) { 
  var result= true;
  var total = part1 + part2; 
  for (var i = 0; i < s.length; i++) { 
    var char = s.charAt(i); 
    if(total.indexOf(char) === -1) {
      result = false;
      break;
    } 
  } 
  return result;
} 
函数isMerge(s,part1,part2){
var结果=真;
var总计=第1部分+第2部分;
对于(var i=0;i
您可以试试下面这个吗

function isMerge(s, part1, part2) { 
  var result= true;
  var total = part1 + part2; 
  for (var i = 0; i < s.length; i++) { 
    var char = s.charAt(i); 
    if(total.indexOf(char) === -1) {
      result = false;
      break;
    } 
  } 
  return result;
} 
函数isMerge(s,part1,part2){
var结果=真;
var总计=第1部分+第2部分;
对于(var i=0;i
首先,这里是您刚刚运行的代码:

function isMerge(s, part1, part2) {
var sArr = s.split('');
var part1Arr = part1.split('');
var part2Arr = part2.split('');
var tempArr = new Array(sArr.length);
function compareArrays(arr1, arr2){
var count = 0;
for (var i = 0; i < arr1.length; i++) {
    if (arr1[i] != arr2[i]) count++;
}
return (count == 0);
}
for (var i = 0; i < sArr.length; i++) {
    for (var j = 0; j < part1Arr.length; j++) {
        if (sArr[i] == part1Arr[j]) tempArr[i] = part1Arr[j];
    }
    for (var k = 0; k < part2Arr.length; k++) {
        if (sArr[i] == part2Arr[k]) tempArr[i] = part2Arr[k];
    }
}
alert(tempArr);

 if (compareArrays(tempArr, sArr)) return true;
 else return false;
}
alert(isMerge('codewars', 'cdw', 'oears'));
函数isMerge(s,第1部分,第2部分){
var sArr=s.分割(“”);
var part1Arr=part1.分割(“”);
var part2Arr=part2.分割(“”);
var tempArr=新数组(sArr.length);
功能比较阵列(arr1、arr2){
var计数=0;
对于(变量i=0;i
现在,问题出在哪里

for (var j = 0; j < part1Arr.length; j++) {

                /* Here you assigned the index (tempArr[i] = j;) not the char */
     if (sArr[i] == part1Arr[j]) tempArr[i] = part1Arr[j];
}

for (var k = 0; k < part2Arr.length; k++) {

                /* Here you assigned the index (tempArr[i] = k;) not the char */
     if (sArr[i] == part2Arr[k]) tempArr[i] = part2Arr[k];
}
for(var j=0;j

希望我能帮助你;)

首先,以下是您的代码:

function isMerge(s, part1, part2) {
var sArr = s.split('');
var part1Arr = part1.split('');
var part2Arr = part2.split('');
var tempArr = new Array(sArr.length);
function compareArrays(arr1, arr2){
var count = 0;
for (var i = 0; i < arr1.length; i++) {
    if (arr1[i] != arr2[i]) count++;
}
return (count == 0);
}
for (var i = 0; i < sArr.length; i++) {
    for (var j = 0; j < part1Arr.length; j++) {
        if (sArr[i] == part1Arr[j]) tempArr[i] = part1Arr[j];
    }
    for (var k = 0; k < part2Arr.length; k++) {
        if (sArr[i] == part2Arr[k]) tempArr[i] = part2Arr[k];
    }
}
alert(tempArr);

 if (compareArrays(tempArr, sArr)) return true;
 else return false;
}
alert(isMerge('codewars', 'cdw', 'oears'));
函数isMerge(s,第1部分,第2部分){
var sArr=s.分割(“”);
var part1Arr=part1.分割(“”);
var part2Arr=part2.分割(“”);
var tempArr=新数组(sArr.length);
功能比较阵列(arr1、arr2){
var计数=0;
对于(变量i=0;i
现在,问题出在哪里

for (var j = 0; j < part1Arr.length; j++) {

                /* Here you assigned the index (tempArr[i] = j;) not the char */
     if (sArr[i] == part1Arr[j]) tempArr[i] = part1Arr[j];
}

for (var k = 0; k < part2Arr.length; k++) {

                /* Here you assigned the index (tempArr[i] = k;) not the char */
     if (sArr[i] == part2Arr[k]) tempArr[i] = part2Arr[k];
}
for(var j=0;j
希望我能帮助你;)

递归调用: 您可以使用递归方法,首先检查字符串和部分字符串的长度,然后检查长度,或者检查字符,然后检查给定部分字符串的其余部分

函数isMerge(s,第1部分,第2部分){
如果(s.length!==part1.length+part2.length){
返回false;
}
如果(!s.length){
返回true;
}
if(part1[0]==s[0]&&isMerge(s.slice(1)、part1.slice(1)、part2)){
返回true;
}
if(part2[0]==s[0]&&isMerge(s.slice(1)、part1、part2.slice(1))){
返回true;
}
返回false;
}
log(isMerge('codewars','cdw','oears');//符合事实的
log(isMerge('codewars','oers','cdwa');//符合事实的
log(isMerge('codecoda','coda','code');//符合事实的
log(isMerge('baeabb','b','baeab');//符合事实的
log(isMerge('bdab','bdab','');//符合事实的
log(isMerge('bfaef','f','bfae');//符合事实的
log(isMerge('codewars','cdw','years');//错误的
log(isMerge('codewars','code','warss');//错误的
log(isMerge('codewars','codes','wars');//错误的
console.log(isMerge('a','b'));//错误
.as控制台包装{max height:100%!重要;top:0;}
递归调用: 您可以使用递归方法,首先检查字符串和部分字符串的长度,然后检查长度,或者检查字符,然后检查给定字符串的其余部分