1. 题目描述
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = "leetcode"返回 0s = "loveleetcode"返回 2
2. 解题思路
最直接的方式,就是使用JavaScript的字符串方法:indexOf() 和lastIndexOf(),他们分别代表正向
某个元素的索引,和倒叙遍历时某元素的索引。只要这两个索引值相等,就说明该元素在字符串中不重复。
也可以使用哈希表来实现这个题:设置两次遍历,第一次将所有元素存入哈希表,key为元素值,value为元素出现的次数。第二次遍历判断那个元素是第一个不重复的元素。
3. 代码实现
第一种方法:
/*** @param {string} s* @return {number}*/var firstUniqChar = function(s) {for(let i = 0; i<s.length; i++){if(s.indexOf(s[i])===s.lastIndexOf(s[i])){return i}}return -1};
第二种方法:
/*** @param {string} s* @return {number}*/var firstUniqChar = function(s) {const hash = {}for(let i = 0; i<s.length; i++){if(!hash[s[i]]){hash[s[i]] =1}else{hash[s[i]] +=1}}for(let i =0; i<s.length; i++){if(hash[s[i]]===1){return i}}return -1};
4. 提交结果
第一种方法:
第二种方法:
