简单
    在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
    示例 1:
    输入:s = “abaccdeff”
    输出:’b’

    示例 2:
    输入:s = “”
    输出:’ ‘

    限制:
    0 <= s 的长度 <= 50000
    方法一:Map+两次遍历(第二遍循环的是字符串)

    1. /**
    2. * @param {string} s
    3. * @return {character}
    4. */
    5. var firstUniqChar = function(s) {
    6. if(s.length==0) return ' ';
    7. const charMap = new Map()
    8. for(const c of s){
    9. charMap.set(c,!charMap.has(c))
    10. }
    11. for(const c of s){
    12. if(charMap.get(c)) return c
    13. }
    14. return ' '
    15. };

    方法二:Map+两次遍历(第二次循环的是Map)
    根据MDN上面的解释,js中的Map类似于java语言中的有序哈希表,for…of之后返回一个[key,value]的数组。当字符串很长(重复字符很多)时,方法二则效率更高。
    image.png

    /**
     * @param {string} s
     * @return {character}
     */
    var firstUniqChar = function(s) {
        if(s.length==0) return ' ';
        const charMap = new Map()
        for(const c of s){
            charMap.set(c,!charMap.has(c))
        }
        for(const item of charMap){
            if(item[1]) return item[0]
        }
    
        return ' '
    };
    

    参考:
    1.https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/solution/mian-shi-ti-50-di-yi-ge-zhi-chu-xian-yi-ci-de-zi-3/
    2.https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Map