(剑指offer ) 第一个只出现一次的字符javascript解法

题目描述

在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
解题思路:
这道题我们要统计每个字符在字符串中出现的次数,那就需要一个容器来存放每个字符的出现次数,在这个容器中可以根据字符来查找他出现的次数,也就是说这个容器的作用是把这个字符映射成一个数字,因此我们可以定义一个map对象,也叫哈希表,它的键(key)是字符,值(value)是该字符出现的次数。
我们需要两次循环:
第一次循环将所有字符和对应出现的次数存放在map中,时间复杂度为0(n);
第二次循环找到value为1的字符所在的位置,并返回。
function FirstNotRepeatingChar(str)
{
    // write code here
    if(str.length === 0){
        return -1
    }
    let map = {}
    for(let i = 0; i < str.length; i++) {
        let charX = str[i]
        if(!map[charX]) {
            map[charX] = 1
        }else {
            map[charX] ++
        }
    }
    for(let i = 0; i < str.length; i++) {
        let charY = str[i]
        if(map[charY] == 1){
            return i
        }
    }
}
不积跬步无以至千里
原文地址:https://www.cnblogs.com/lyt0207/p/12564917.html