分类:字符串
题目描述:
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例:
s = "leetcode"
返回 0
s = "loveleetcode"
返回 2
提示:你可以假定该字符串只包含小写字母。
思路:
用一个map记录字符串中每个字符出现的次数和第一次出现的索引;然后遍历该map,取出第一个出现次数为1的字符的索引
代码实现:
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function (s) {
const map = new Map();
let temp = null;
for (let i = 0; i < s.length; i++) {
if (map.has(s[i])) {
temp = map.get(s[i]);
temp.count++;
map.set(s[i], temp);
} else {
map.set(s[i], {
index: i,
count: 1
})
}
}
let index = -1;
for (const value of map.values()) {
if (value.count === 1) {
index = value.index;
break;
}
}
return index;
};
运行结果: