javascript Codewars扰码

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript Codewars扰码相关的知识,希望对你有一定的参考价值。

// another attempt.  keep timing out

function scramble(str1, str2) {
var arr=[],strk;
for(var i=0,len=str1.length;i<len;i=i+25){
   strk=str1.slice(i,i+25);
   arr.push(strk);
   }
   
var spl2=str2.split(''),
    matches;
return spl2.every(function(el,index,_arr){
   for(var j=0,k=arr.length;j<k;j++){
   matches=arr[j].indexOf(el);
   if(matches!==-1){
     arr[j]=arr[j].slice(0,matches)+arr[j].slice(matches+1);
     return true;
   }
   }
 return false;
});
}
function scramble(str1, str2) {

var spl1=str1.split('').sort().join(''),
    spl2=str2.split('').sort(),
    matches;
return spl2.every(function(el,index,arr){
   matches=str1.indexOf(el)!==-1;
   if(matches){
    str1=str1.replace(el,'');  
    return true;
    }
    return false;
});
}

// this is obviously better, though it still fails, and it doesn't do anything different for large strings
function scramble(str1, str2) {

var spl1=Array.from(str1).sort().join(''),
    spl2=Array.from(str2).sort(),
    matches,
    j=0,
    _str1=spl1+'',
    largeMatcher,   
    i=false,
    len=_str1.length;
return spl2.every(function(el,index,arr){
  i=false;
  if(len>100){
    for(j=0;j<len;j=j+99){
      largeMatcher=_str1.slice(j,j+99);
      matches=largeMatcher.search(el);
      if(matches){
        i=j+matches;
        _str1=_str1.slice(0,i)+_str1.slice(i+1);
        break;
        }
    }
    } else {
  matches=_str1.search(el)!==-1;
  }
  if(matches){
    if(!i){
    _str1=_str1.replace(el,'');  
    } 
    return true;
    }
    return false;
});
}

以上是关于javascript Codewars扰码的主要内容,如果未能解决你的问题,请参考以下文章

JavaScript练习笔记整理·2 - 6.24

JavaScript练习笔记整理·1 - 6.23

codewars闯关玩耍1

正则表达式密码验证 - Codewars [重复]

华为mate305g版怎么辨别真假

Codewars练习