我正在尝试解决这个代码 war 问题:
Complete the function scramble(str1, str2) that returns true if a portion of str1 characters can be rearranged to match str2, otherwise returns false.
examples:
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% 的测试,而且不幸的是,它们没有显示测试输入是什么。
我的预感是,有一些边缘情况此代码无法捕获。任何帮助将不胜感激。
最佳答案
您需要处理 str2
的字母实例多于 str1
的情况。
例如:
scramble("a", "aa")
其计算结果应为 false(“a”中没有足够的“a”来形成“aa”)。
关于javascript - 我的代码没有正确比较两个不同的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62493389/