javascript - 为什么相同字符不相邻时输出不正确?

标签 javascript

等值图是没有重复字母(连续或不连续)的单词。实现一个函数来确定仅包含字母的字符串是否为等值线图。假设空字符串是等值线图。忽略字母大小写。

function isIsogram(str){
  let NewStr = str.toLowerCase();
     for ( let i = 0; i < NewStr.length; i++){
        for ( let j = i + 1; j < NewStr.length; j++) {
            if ( NewStr[i] === NewStr[j]) {
                return false } 
            else {
                return true}
      }
    }
}

最佳答案

一旦发现两个字母不相等,此代码将返回true:

if ( NewStr[i] === NewStr[j]) {
    return false } 
else {
    return true}

您应该做的是仅在条件通过时返回false。如果不继续循环,最后返回true:

function isIsogram(str) {
  let NewStr = str.toLowerCase();
  for (let i = 0; i < NewStr.length; i++) {
    for (let j = i + 1; j < NewStr.length; j++) {
      if (NewStr[i] === NewStr[j]) {
        return false
      }
    }
  }
  
  return true;
}

console.log(isIsogram('cdba')); // true
console.log(isIsogram('aa')); // false
console.log(isIsogram('efgaba')); // false

您还可以使用 Set 进行相同的检查。 。如果 Set 中的字母数等于原始字符串中的字母数,则所有字符都是唯一的。

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

console.log(isIsogram('cdba')); // true
console.log(isIsogram('aa')); // false
console.log(isIsogram('efgaba')); // false

关于javascript - 为什么相同字符不相邻时输出不正确?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59574977/

相关文章:

javascript - node.js mongodb find()结果到数组但不使用.filter

javascript 正则表达式匹配文件扩展名但不包括前缀扩展名

javascript - 将 ng-model 数组绑定(bind)到固定数量的文本框

javascript - 仅使用 javascript 删除点击无限滚动页面上的框

javascript - Slickgrid:具有动态参数的多重分组

javascript - 如何向 Ext JS 选择器子元素添加单击事件处理程序?

javascript - 我怎样才能确保这个函数将返回一个没有任何重复的数组,并且不会减少元素的数量?

javascript - 如何在 adobe DTM 中延迟 s.t 调用?

Javascript:将时间戳转换为人类可读的日期?

javascript - 通过 # 将滚动到元素居中? (不修改 DOM/使用 refs)