方法一

{
    // write code here
    if(!str)    return -1;
    let map = new Map();
    for(let i = 0;i < str.length;i++){
        let tmp = str[i];
        if(map.has(tmp)){
            map.set(tmp,map.get(tmp) + 1); 
        }else{
            map.set(tmp,1);
        }
    }
    for(let i = 0;i < str.length;i++){
        let tmp = str[i];
        if(map.has(tmp)){
            if(map.get(tmp) === 1)
                return i;
        }
    }
    return -1;
}
module.exports = {
    FirstNotRepeatingChar : FirstNotRepeatingChar
};

alt

方法二

{
    // write code here
    let res = [] // 存储字母出现的次数
    //统计出现的次数
    for(let i = 0;i < str.length;i++){
        let key = str[i];
        if(!res[key]){
            res[key] = 0;
        }
        res[key]++;
    }
    //遍历字符串,若只出现一次则返回下标
    for(let  i = 0;i < str.length;i ++){
        let key = str[i];
        if(res[key] == 1){
            return i;
        }
    }
    return -1;
}
module.exports = {
    FirstNotRepeatingChar : FirstNotRepeatingChar
};

alt