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 "_";
};
推荐阅读
- angular - Angular 8:子组件中的嵌套反应表单不起作用
- python - python为什么在我的json数组中每个json元素都有相同的值
- javascript - 将数据从 JS 传递到 Laravel
- python-3.x - 我无法从 16k 会员服务器获取会员,我做错了什么?
- java - 即使按照 Spring 文档的建议进行操作,为什么我会收到“不存在 'Access-Control-Allow-Origin' 标头”
- php - 数组中的 Twig 变量
- combinations - 网格上色有多少种方法
- glsl - 圆顶图像投影
- sql - striim - 未建立连接:1
- reactjs - 'number' 类型的参数不能分配给 array.includes() 中的 'never' 类型的参数