小于 1 分钟
代码实现 (使用 Map)
这是最通用、最易理解的写法:
/**
* @param {string} s
* @return {number}
*/
var firstUniqChar = function(s) {
// 1. 创建一个 Map 来存储字符及其出现的次数
const frequencyMap = new Map();
// 2. 第一次遍历:统计频率
for (let char of s) {
frequencyMap.set(char, (frequencyMap.get(char) || 0) + 1);
}
// 3. 第二次遍历:查找第一个出现次数为 1 的字符
for (let i = 0; i < s.length; i++) {
if (frequencyMap.get(s[i]) === 1) {
return i; // 找到了,返回索引
}
}
// 4. 如果没找到,返回 -1
return -1;
};