给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
通过hash 和map
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
let map = new Map();
let hash = {}; //记录字符串
for(let i =0; i<s.length;i++){
if(!hash[s[i]]){
map.set(s[i],i); //将不重复的字符串记录
hash[s[i]] = 1;
}else{
map.delete(s[i]); //去除重复字符串
}
}
if(map.size){
return map.values().next().value;
}else{
return -1;
}
};`在这里插入代码片`
两次遍历获取
第一次记录出现次数,第二次获取第一次次数为1的值
let count = [];
for (let i=0;i<s.length;i++){
count[s[i]] = (count[s[i]] || 0)+1;
}
for (let i=0; i<s.length;i++){
if(count[s[i]]===1){
return i;
}
}
return -1