我试图检查字符串中的所有字符是否都是唯一的。以下代码不断返回 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
}
其他一些杂项:
- 您应该使用分号
- 您应该确保声明变量,以便它们不会提升到全局范围(例如
var i=0
与i=0
) - 您应该在倒数第二个元素处停止循环,否则您将尝试访问
sortedChars
范围之外的元素 - 考虑对非常大的字符串进行排序时会发生什么以及这将如何影响函数的运行时
关于javascript - 检查字符串是否不包含重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48477843/