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"));
关于javascript - 创建一个接受字符串并返回 true 或 false 的函数,具体取决于该字符串是否包含重复字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59186685/