跳至主要內容

Mr.He小于 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;
};