javascript - 计算错误的唯一重复项

标签 javascript count duplicates

我遇到了这个挑战,您必须计算提供的字符串中有多少个重复项。

我想出了这段代码,如果有重复的字符串,应该对字符串进行排序,拼接它们并将它们计为总数+1。如果这封信不是重复的 -> 只需将它们拼接起来,这样我就可以继续前进。

代码发生了什么?我想要的不是挑战的答案,而是了解我哪里出错了。为什么代码仅在有 4 个以上相同字母时才注册重复项?

这是代码,请注意,我仅使用 var e 来查看数组的哪一部分被拼接。

预期输出:

[[p, p], [a, a, a, a], [c, c, c, c, c, c, c, c], [d, d, d, d], [g, g, g], [e, e]]

如果相同字符出现 2 次以上,则将重复的 block 切片并将它们放入新数组中。

function duplicateCount(text) {
  const str = Array.from(text.toLowerCase()).sort();
  var h = 0;
  var e = [];
  for (let i = 0; i < str.length; i++) {
    if (str.lastIndexOf(str[i]) > 2) {
      h++;
      e.push(str.splice(0, str.lastIndexOf(str[i]) + 1));
      i = 0;
    } else {
      str.splice(0, 1);
      i = 0
    }
  }
  return e
}
console.log(duplicateCount('ppaaaaccccccccgggiyddddhee'));

最佳答案

您的代码在删除匹配项时将索引设置回零。问题是循环中的下一次迭代使其从索引 1 而不是 0 开始。因此您需要将其设置为 -1。实际上,使用 while 循环会更好。

下一个问题是你说下一个索引必须是 > 2。问题是 pp 的索引是什么?这不是两个。您要确保索引不是同一个元素。

function duplicateCount(text) {
  const str = Array.from(text.toLowerCase()).sort();
  var h = 0;
  var e = [];
  for (let i = 0; i < str.length; i++) {
    if (str.lastIndexOf(str[i]) != i) {
      h++;
      e.push(str.splice(0, str.lastIndexOf(str[i]) + 1));
      i = -1;
    } else {
      str.splice(0, 1);
      i = -1
    }
  }
  return e
}
console.log(duplicateCount('ppaaaaccccccccgggiyddddhee'));

带有 while 循环

function duplicateCount(text) {
  const str = Array.from(text.toLowerCase()).sort();
  var h = 0;
  var e = [];
  while (str.length) {
    var lastIndex = str.lastIndexOf(str[0])
    var removed = str.splice(0, lastIndex + 1);
    if (lastIndex) {
      h++;
      e.push(removed);
    }
  }
  return e
}
console.log(duplicateCount('ppaaaaccccccccgggiyddddhee'));

关于javascript - 计算错误的唯一重复项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64667036/

相关文章:

javascript - 从代码隐藏向 jQuery 函数发送动态参数

mysql - 我想要一个从我的数据库中删除重复条目的查询

mysql - 将从 mysql 查询获得的值显示到 VB.net 文本框中

mysql - 删除 MySQL 上的重复行(至少保留一个)

r - 在 R : Avoid duplicates in selection from many rows 中

javascript - React.memo prevProps 总是与 nextProps 不同,即使 props 永远不会改变

javascript - ID anchor 的问题

javascript - Meteor 无法更新 mongo?

html - 使用 HTML 的 XSLT 1.0 字数统计

c++ - XCode:使用全局变量时出现重复符号错误