创建一个函数,该函数接受字符串并根据字符串是否具有重复字符返回 true 或 false



var arr = [];
repeatcount = 0;
function isogram(str) {
for (var i = 0; i < str.length; i++) {
for (var g = 0; g < arr.length; g++) {
if (str[i] != arr[g]) {
arr.push(str[i]);
}
}
}
if (arr.length != str.length) {
return false
} else {
return true
}
}
document.write(isogram("jiang"));
console.log(arr);

当我使用 console.log(arr( 时,我发现 arr 是空的,我不知道为什么。我使用的方法基本上是创建一个存储非重复字符的数组,然后比较长度,如果长度不同,则存在重复字符。

因为开头arr长度等于0,内部循环永远不会被触发。

g < arr.length // is always false

我建议你去掉内部循环,改用一个简单的条件——如果当前字母还没有arr里面——推它,如果有的话——不要。

var arr = [];
repeatcount = 0;
function isogram(str) {
for (var i = 0; i < str.length; i++) {
if (arr.indexOf(str[i]) === -1) {
arr.push(str[i]);
} else {
return false;
}
}

return arr.length === str.length;
}
console.log(isogram("jiang"));
console.log(isogram("jiiang"));

奖励:单线解决方案:

const isogram = (str) => [...str].length === [...new Set(str)].length;
console.log(isogram("jiang"));
console.log(isogram("jiiang"));

最新更新