【发布时间】:2020-06-21 01:05:10
【问题描述】:
我正在尝试解决这个代码战问题:
完成函数 scramble(str1, str2),如果 a str1 字符的一部分可以重新排列以匹配 str2,否则 返回 false。
例子:
scramble('rkqodlw', 'world') ==> True
scramble('cedewaraaossoqqyt', 'codewars') ==> True
scramble('katas', 'steak') ==> False
这是我的尝试:
function scramble(str1, str2) {
let obj1 = {};
let obj2 = {};
for (el of str1) {
obj1[el] = (obj1[el] || 0) + 1;
}
for (el of str2) {
obj2[el] = (obj2[el] || 0) + 1;
}
for (el in obj2) {
if (!(el in obj1)) return false;
}
return true;
}
我将字符串转换为对象,然后将键相互比较。我的代码通过了 Codewars 上大约 90% 的测试,但是它没有通过另外 10% 的测试,不幸的是它们没有显示测试输入是什么。
我的直觉是这段代码没有捕捉到一些边缘情况。任何帮助将不胜感激。
【问题讨论】:
-
替换规则是什么?换句话说,如果我打电话给
scramble("a","aa"),“a”可以重用吗?大写有什么特殊规定,还是大写还是小写还是小写?
标签: javascript string algorithm object