javascript - 检查字符串是否不包含重复字符

标签 javascript arrays string sorting

我试图检查字符串中的所有字符是否都是唯一的。以下代码不断返回 true。我怀疑 if 条件一直返回 false,除非排序列表中的前 2 个字符相同。

有人可以帮忙吗?

function checkifStringisUnique (str) {
  var chars = str.split('')
  var sortedChars = chars.sort()
  console.log(sortedChars)
  console.log(sortedChars.length)

  for (i=0; i < sortedChars.length; i++) {
    if (sortedChars[i] === sortedChars[i+1]) {
      return false
    }
    return true
  }
}

最佳答案

您的return true语句位置错误。它应该位于函数的末尾,但您将它放在 for 循环的末尾。

这意味着除非排序字符串的前两个字符相同,否则总是会错误地返回 true

function checkifStringisUnique (str) {
  var chars = str.split('')
  var sortedChars = chars.sort()
  console.log(sortedChars)
  console.log(sortedChars.length)

  for (i=0; i < sortedChars.length; i++) {
    if (sortedChars[i] === sortedChars[i+1]) {
      return false
    }
  }

  return true
}

其他一些杂项:

  1. 您应该使用分号
  2. 您应该确保声明变量,以便它们不会提升到全局范围(例如 var i=0i=0)
  3. 您应该在倒数第二个元素处停止循环,否则您将尝试访问 sortedChars 范围之外的元素
  4. 考虑对非常大的字符串进行排序时会发生什么以及这将如何影响函数的运行时

关于javascript - 检查字符串是否不包含重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477843/

相关文章:

php - 当使用 JavaScript 在文件字段中未选择要上传的文件时,会弹出警报

javascript - key 已定义,但它会警告 "Each child in a list should have a unique key prop"

javascript - 简化删除重复数组的功能

python - 在 Python 中从较大的方阵 (n,n) 复制较小的方阵 (m,m)

java - 将多行文本添加到 JTextArea

sql-server - SQL Server 和 Excel 认为两个明显相同的字符串不相等

javascript - $在mongodb中过滤最多3层嵌套

javascript - onSet 函数不会在 div 上触发

javascript - 如果复选框和下拉菜单尚未填充,如何禁用提交按钮?

string - 如何在 Julia 中使用字符串命名数据框中的列?