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"));