Javascript 使功能更具性能
我目前正试图完成一个有趣的代码挑战。下面是一个场景 写入Javascript 使功能更具性能,javascript,Javascript,我目前正试图完成一个有趣的代码挑战。下面是一个场景 写入函数加扰(str1,str2),如果str1字符的一部分可以重新排列以匹配str2,则返回true,否则返回false 例如: str1是'rkqodlw'和str2是'world'输出应返回true str1是'cedewaraaossoqyt'和str2是'codewars'应返回真 str1是'katas'和str2是'steak'应该返回false 我编写的函数可以工作,但执行所有可能的测试需要很长时间。如何使我的功能更有效?提前谢
函数加扰(str1,str2)
,如果str1
字符的一部分可以重新排列以匹配str2
,则返回true
,否则返回false
例如:str1
是'rkqodlw'
和str2
是'world'
输出应返回true
str1
是'cedewaraaossoqyt'
和str2
是'codewars'
应返回真
str1
是'katas'
和str2
是'steak'
应该返回false
我编写的函数可以工作,但执行所有可能的测试需要很长时间。如何使我的功能更有效?提前谢谢
以下是我编写的函数:
function scramble(str1, str2) {
for (var i = 0; i < str1.length; i++) {
str2 = str2.replace(str1.charAt(i),'');
}
return str2.length == 0 ? true : false;
}
功能加扰(str1、str2){
对于(变量i=0;i
我现在将尝试编写代码,但也许另一种方法可以产生有趣的结果。
基本上我的想法是:
- 创建一个空对象
- 开始循环遍历str2:获取当前字母,是新创建的字母吗
对象具有名为“当前字母”的属性,增加
属性,或者将属性“current”添加到该项中
字母“带值1
- 现在,对于对象的每个属性,计算str1中的字母是否
至少与属性值的出现次数相同
代码如下:
let lettersCounter = new Object();
for (let i = 0; i < str2.length; i++) {
if (typeof lettersCounter[str2[i]] !== 'undefined'){
lettersCounter[str2[i]] ++;
} else {
lettersCounter[str2[i]] = 1;
}
}
let props = Object.keys(lettersCounter);
for (let i = 0; i < props.length; i ++){
let currLetter = props[i];
if ((str1.split(currLetter).length) <= lettersCounter[currLetter] ){
return false;
}
}
return true;
让lettersconter=新对象();
for(设i=0;i 如果((str1.split(currLetter).length)你说“太长”是什么意思?scramble(“piosdjfpasoidjfkoawmesfjatkjdsngfayksndglkjysngdlkjantokgsdannkgjmaoriewjgaeoirnerijgaeirgwoef”,“hello”)
在我的机器上花费0.06毫秒返回str2.length==0?true:false;
可以重写返回!str2.length;
(var i=0;i
可以在中针对(var i=0,j=str1.length;i
但除此之外……在通过61个测试后,由于“需要超过12000ms才能完成”,它会出错。return!str2.length;
没有帮助。return!str2.length;没有帮助。