Javascript 检查字符串中的字符是否唯一
我实现了检查传入的字符串是否唯一的算法。我觉得我的算法是正确的,但显然在某些情况下,它给出了错误的结果。为什么?Javascript 检查字符串中的字符是否唯一,javascript,Javascript,我实现了检查传入的字符串是否唯一的算法。我觉得我的算法是正确的,但显然在某些情况下,它给出了错误的结果。为什么? 函数是唯一的(str){ 让sortedar=str.split(“”).sort(); for(让sortedar.entries()的[i,char]{ 如果(字符===分拣机[i+1]){ 返回错误 }否则{ 返回真值 } } } console.log(isUnique('heloworld')//truereturn立即终止函数,因此只有for循环的第一次迭代才会运行。相
函数是唯一的(str){
让sortedar=str.split(“”).sort();
for(让sortedar.entries()的[i,char]{
如果(字符===分拣机[i+1]){
返回错误
}否则{
返回真值
}
}
}
console.log(isUnique('heloworld')//true
return
立即终止函数,因此只有for
循环的第一次迭代才会运行。相反,您应该检查是否所有字符都是唯一的(如果不是,则在循环内返回false
),否则在循环结束后返回true
:
函数是唯一的(str){
让sortedar=str.split(“”).sort();
for(让sortedar.entries()的[i,char]{
如果(字符===分拣机[i+1]){
返回错误
}
}
返回真值
}
log(isUnique('heloworld'))
只运行for循环中的第一次迭代(因为您总是执行'return')。相反,您可以使用以下代码
函数是唯一的(str,t={})
{
return![…str].some(c=>t[c]=t中的c)
}
log('heloworld=>',isUnique('heloworld');
log('helo=>',isUnique('helo')
不确定这是否重要,但对于多单元代码点,您会得到错误的答案,例如,isUnique('修复方法相对简单:返回新集合(str).size==Array.from(str).length;
FWIW:函数noDuplicatedChars(){const chars=new Set();for(让str的c){if(chars.has(c))返回false;chars.add(c);}return true;}
是一个更快的选择。为什么r
是一个参数?r(我将其重命名为t)是临时哈希映射(以巧妙的方式定义为默认参数)