javascript - 我的代码没有正确比较两个不同的字符串

标签 javascript string algorithm object

我正在尝试解决这个代码 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/

相关文章:

algorithm - 如何标准化趋势数据?

algorithm - 需要帮助找出要使用的算法

javascript - 如何在 jQuery 中使用行和列索引创建表?

javascript - 如何在 x3dom 中更改 3d 文本的斜 Angular 大小?

javascript - 如何根据格式(缩进等)不同的另一个文本中的一个文本获取子字符串?

Javascript错误返回提供的字符串,每个单词的首字母大写

algorithm - 检测一组非严格不等式中的不一致

javascript - 在 Bootstrap 中以模态加载轮播中的特定幻灯片

javascript - 追加html数据时不能多次点击按钮

java - 字符串十六进制到字符串二进制转换器