算法题-字符串中的第一个唯一字符【JS实现】_js 输入一个字符串,找到第一个不重复字符的下标-程序员宅基地

技术标签: Crystalの算法学习  

给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。

Demo

s = "leetcode"
返回 0

s = "loveleetcode"
返回 2
var firstUniqChar = function(s) {
    
    const frequency = _.countBy(s);
    for (const [i, ch] of Array.from(s).entries()) {
    
        if (frequency[ch] === 1) {
    
            return i;
        }
    }
    return -1;
};
var firstUniqChar = function(s) 
    var map=new Map();
    for(i=0;i<s.length;i++){
    
         if(map.has(s[i])){
    
             map.set(s[i],2);
         }
         else{
    
             map.set(s[i],1);
         }
     }

    for(i=0;i<s.length;i++){
    
        if(map.has(s[i]) && map.get(s[i])===1){
    
            return i;
        }
    }
    return -1;
 } ;

首次出现索引 = 该字符最后出现索引

var firstUniqChar = function(s) {
    
   for(i=0;i<s.length;i++){
    
       if (s.indexOf(s[i])===s.lastIndexOf(s[i])){
    
          return i;
      } 
   }
   return -1;
};
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/baidu_33591715/article/details/118436313

智能推荐

java虚拟机 jvm 出入java栈 栈空间内存分配_java 栈深度大小-程序员宅基地

文章浏览阅读1w次,点赞4次,收藏12次。java栈空间是一块线程私有的内存空间,java堆和程序数据密切相关,那么java栈就是和线程执行密切相关。线程最基本的执行行为就是函数的调用。每次函数调用其实是通过java栈传递数据的。数据结构中的栈的特性:先进后出,后进先出。FIFO.java内存中的栈跟数据结构中的特性相似也是FIFO.但是只支持进栈和出栈操作。java栈中保存的主要内容是栈帧。每一次函数调用都会有对应的栈帧被压_java 栈深度大小

html5给div设置单边界,纯CSS实现border的0.5px设置-程序员宅基地

文章浏览阅读1.4k次。移动开发现在占据着越来越大的前端开发比例,所以对于移动端WEB页的要求也越来的越多,比如很多的H5页面,在设计出来时,看起来更像是一个原生的APP页面,而我这里想说的一个点就是,在H5页面中,关于分隔线的问题,我们可以看到,很多的APP中,区域的border的分割线,都是一条很细很细的线,接下来,我们就来说说这些细线的问题。概述在这之前,我们要先知道一个问题,那就是在浏览器中,对于元素设置的某些数..._border 0.5px

我与奥赛的不解之缘_我从小就和奥数结下不解之谜了-程序员宅基地

文章浏览阅读969次。现在想想,如果说当年的奥赛真对我有什么帮助的话,那就是让我知道珍惜时间,做自己想做的事。_我从小就和奥数结下不解之谜了

Qt项目构建路径问题_qt新建项目无法生成构建目录-程序员宅基地

文章浏览阅读2.5k次。Qt运行后生成的一些文件,存放时没有生成在总的文件下或者是自动生成了几个新建的嵌套文件下?解决办法:上一次Qt项目下的构建目录是本次项目生成文件的存放路径,所以要改变存放路径,需要先改变路径,然后保存所有文件,之后关闭Qt,再打开工程,进行运行。要删除.uer文件,删除路径依赖,然后重新整_qt新建项目无法生成构建目录

MATLAB - 梯度可视化_matlab计算梯度-程序员宅基地

文章浏览阅读3.2k次,点赞3次,收藏22次。1、梯度(gradugradugradu或∇u\nabla u∇u)1)概念:∇u=e⃗l∂u∂l∣max⁡\nabla u=\left.\vec{e}_{l} \frac{\partial u}{\partial l}\right|_{\max }∇u=el​∂l∂u​∣∣∣∣​max​2)意义:描述标量场在某点的最大变化率及其变化最大的方向。3)梯度的表达式:直角坐标系:∇u=e⃗x∂u∂x+e⃗y∂u∂y+e⃗z∂u∂z\nabla u=\vec{e}_{x} \frac{\partial _matlab计算梯度

pr中导出视频的应用,快速制作竖版短视频_pr竖版怎么导-程序员宅基地

文章浏览阅读671次。导出视频的应用:快捷键ctrl+m即是导出的快捷键。在导出视频的时候可以给视频添加入点和出点。这样即使视频后面还有片段还是只能导出入点个出点内的内容。导出的时候格式选择,因为只有这样才能导出mp4格式的。目标比特率设置的话最低要设置在3.如果你要上传到抖音上的话。需要小于25m。如果你不是要上传到抖音上的话直接用默认值就可以。在最下面会显示文件的大小。快速制作竖版短视频:序列->自动重构序列。,然后直接进行存储就好了..._pr竖版怎么导

随便推点

python3导入selenium2Library不成功或者找不到关键字_robotframework引入selenium2library但是识别不了关键字-程序员宅基地

文章浏览阅读1.3k次。最近从python2切换到python3时,继续使用robotframework框架时遇到一些问题,如下:①导入selenium2library不成功②导入selenium2library成功后,F5查询关键字时找不到open browser等关键字,以前写的关键字也显示黑色,但是可以正常使用,可是对于要新加UI上的脚本时,就没有联想功能了,对用户很不友好根据各种网站查询的解决方案:1.卸载高版本的robotframework,我的是robotframework3.2.1在python目录下运行:_robotframework引入selenium2library但是识别不了关键字

ASP.NET MVC入门视频教程-程序员宅基地

文章浏览阅读622次。  自从09年三月份微软发布了ASP.NET MVC 1.0,已有超过百万的开发人员下载和使用,它的人气逐月递增。今年三月份发布了ASP.NET MVC 2.0,关于其特性、功能和下载这里不废话了。重点是下面的一些ASP.NET教程资源,:  一 ASP.NET MVC 文章推荐   ASP.NET MVC的在线文档:http://go.microsoft.com/fwli..._.mvc视频。教程

Q_D指针(d指针)和Q_Q指针(q指针)简介-程序员宅基地

文章浏览阅读3.1k次,点赞2次,收藏7次。文章目录1. Q_D指针2. Q_Q指针1. Q_D指针在class中配合使用 Q_DECLARE_PRIVATE 和 Q_D ,方便获取d指针,d指针指向Class##Private;2. Q_Q指针在class##Private配合使用 Q_DECLARE_PUBLIC 和 Q_Q ,方便获取q指针,q指针指向原class本身;Q_DECLARE_PRIVATE 和 Q_DEC..._q_d

css自定义字体font-face的兼容和使用_css自定义字体在 safari 兼容-程序员宅基地

文章浏览阅读1.8w次,点赞2次,收藏5次。@Font-face目前浏览器的兼容性:Webkit/Safari(3.2+) TrueType/OpenType TT (.ttf) 、OpenType PS (.otf); Opera (10+) TrueType/OpenType TT (.ttf) 、 OpenType PS (.otf) 、 SVG (.svg); Internet Explorer 自i_css自定义字体在 safari 兼容

html + css + js 实现简易计算器_计算器布局页面html简易-程序员宅基地

文章浏览阅读1.9k次。使用LICEcap工具截取的效果图:<!DOCTYPE html><html><head> <meta charset="utf-8"> <title>仿计算器</title> <!-- 引用外部css文件 --> <link rel="stylesheet" href="caculator...._计算器布局页面html简易

intellij idea加载go开发插件源码时报错Error:ant: Cannot run 'patch-version' target: JDK '<unknown>' not found_idea 上安装go 引入模板报错-程序员宅基地

文章浏览阅读2.4k次。习惯了用intellij idea,学习go语言也不想转到liteidea,就按网上的教程,先去下载了插件源码,用idea运行导出成jar,然后加载这个jar插件,就可以开发了,但是,加载插件源码编译的时候报错了,Error:ant: Cannot run 'patch-version' target: JDK '' not found,google了,一下,找到了错误原因,https://net_idea 上安装go 引入模板报错

推荐文章

热门文章

相关标签