1. 题目描述
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = "leetcode"
返回 0
s = "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. 提交结果
第一种方法:
第二种方法: