Tae*_*Tae 2 javascript recursion function scramble
我遇到以下问题。我基本上必须编写一个代码/函数,如果可以将str1的一部分重新填充到str2,则返回true。
编写函数scramble(str1,str2),如果可以重新排列部分str1字符以匹配str2,则返回true,否则返回false。
例如:str1是'rkqodlw',而str2是'world',输出应返回true。str1是'cedewaraaossoqqyt',而str2是'codewars'应该返回true。str1是'katas',而str2是'steak'应该返回false。
仅使用小写字母(az)。不包含标点符号或数字。性能需要考虑。
下面是我目前的代码:
function scramble(str1, str2) {
var first; //longer string
var second; //shorter string
if(str1 || str2 === "undefined") {
return false;
}
if(str1.length > str2.length) {
first = str1;
second = str2
} else if(str2.length > str1.length) {
first = str2;
second = str1;
}
for (i=0; i<second.length; i++) {
if (first.indexOf(second[i]) === -1) {
return false;
}
}
return true;
}
Run Code Online (Sandbox Code Playgroud)
您能帮我解决这个问题吗?
您可以使用带有字母计数的哈希表,并使用count检查并减少count。
该建议不会破坏阵列。
function scramble(str1, str2) {
var count = Object.create(null);
Array.prototype.forEach.call(str1, function(a) {
count[a] = (count[a] || 0) + 1;
});
return Array.prototype.every.call(str2, function(a) {
return count[a]--;
});
}
console.log(scramble('rkqodlw', 'world')); // true
console.log(scramble('cedewaraaossoqqyt', 'codewars')); // true
console.log(scramble('katas', 'steak')); // false
console.log(scramble('', 'o')); // falseRun Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1176 次 |
| 最近记录: |