javascript - 请帮助理解功能

标签 javascript

我在浏览 leetcode 时发现了一个我无法完全推理的解决方案的问题。

问题描述:“给定一个由小写英文字母组成的字符串s,找到并返回其中第一个非重复字符,如果不存在则返回'_'。”

解决方案:

/*test word*/ var word = "abcdefghijklmnopqrstuvwxyziflskecznslkjfabe";
/*Test #2 var word = "abacabad"; */
firstNotRepeatingChar = s => {
    var arr = s.split("");
    for(var i = 0; i < arr.length; i++){
        if(arr.indexOf(arr[i]) == arr.lastIndexOf(arr[i]))
            return arr[i];
    }
    return "_"
};

firstNotRepeatingChar(word);

我想知道是否有人可以解释这是如何工作的以及为什么它会出现“d”的解决方案。测试 # 2 应该打印“c”,确实如此,但我不完全理解为什么。

非常感谢!

最佳答案

它将 s 拆分为一个由单个字符组成的数组,然后循环遍历生成的数组。对于每个元素(字符),它检查数组中该字符的第一个和最后一个实例是否在同一位置。如果是,那么它必须是数组中该字符的唯一实例。

顺便说一句,解决方案可以简化如下:

const firstNotRepeatingChar = s => {
  for (let c of s) {
    if (s.indexOf(c) === s.lastIndexOf(c)) return c;
  }
  return "_";
};

关于javascript - 请帮助理解功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58047637/

相关文章:

javascript - 使 JavaScript 生成的内容可以被搜索引擎索引

javascript - 更高效的 'remove keywords' 函数

javascript - JQuery 在向服务器发送变量时添加逗号

javascript - 如何创建流畅的滚动效果?

javascript - 创建一个 jQuery 容器来保存其他功能

javascript - Sitemesh 出现 ERR_CONTENT_LENGTH_MISMATCH 错误

javascript - .defineProperty 方法期间调用堆栈和 this 的行为

javascript - 如何使用 JavaScript 从特定页面提取所有链接并将它们放入数组中?

c# - UpdatePanel 停止 Javascript 工作

javascript - Uncaught ReferenceError : txtMaking_F is not defined