gpt4 book ai didi

javascript - 检查字符串中的字符是否唯一

转载 作者:可可西里 更新时间:2023-11-01 02:52:10 24 4
gpt4 key购买 nike

我实现了我的算法来检查传入的字符串是否唯一。我觉得我的算法是正确的,但显然在某些情况下它给出了错误的结果。为什么?

function isUnique(str) {
let sortedArr = str.split('').sort();
for (let [i, char] of sortedArr.entries()) {
if (char === sortedArr[i + 1]) {
return false
} else {
return true
}
}
}

console.log(isUnique('heloworld')) // true

最佳答案

return 立即终止该函数,因此如果您的 for 循环将运行,则只有第一次迭代。相反,您应该检查所有字符是否唯一(如果不是,则在循环内返回false),否则在结束后返回true循环:

function isUnique(str) {
let sortedArr = str.split('').sort();
for(let [i,char] of sortedArr.entries()) {
if(char === sortedArr[i + 1]) {
return false
}
}
return true
}

console.log(isUnique('heloworld'))

但是使用 Set 并查看其大小是否等于字符串的长度可能会容易得多:

function isUnique(str) {
return new Set(str).size === str.length;
}

console.log(isUnique('heloworld'))
console.log(isUnique('abc'))

查看评论,谢谢 Patrick:如果您需要考虑由多个 UCS-2 代码点(𝟙𝟚𝟛😎😜🙃 等)组成的字符,请调用字符串迭代器并检查它返回了多少项,这可以通过 spread 或 Array.from 来完成(因为否则,str.length 将无法计算出正确数量的单个字符):

function isUnique(str) {
return new Set(str).size === [...str].length;
}

console.log(isUnique('😜'));
console.log(isUnique('😜😜'));

关于javascript - 检查字符串中的字符是否唯一,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55487722/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com