# 剑指50.第一个只出现一次的字符

# 题目

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。

# 例子

s = "abaccdeff"
返回 "b"

s = "" 
返回 " "
1
2
3
4
5

# 自己的答案

/**
 * @param {string} s
 * @return {character}
 */
var firstUniqChar = function(s) {
    if(s.length === 0) return ' ';
    let map = new Map()
    let array = s.split('');
    for(let i=0;i<array.length;i++) {
        if(map.has(array[i])) {
            map.set(array[i], map.get(array[i])+1)
        } else {
            map.set(array[i], 1)
        }
    }
    let resultAll = []
    map.forEach((value, key) => {
        if(value === 1) {
            resultAll.push(key)
        } else {
            return ' '
        }
    });
    if(resultAll.length !== 0) {
        s = resultAll[0];
    } else {
        s = ' '
    }
    return s;
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

# 别人的答案

var firstUniqChar = function(s) {
    if(!s) return " "
    let map = new Map()
    for(let c of s) {
        if(map.has(c)) {
            map.set(c, map.get(c) + 1)
        } else {
            map.set(c, 1)
        }
    }
    for(let c of map.keys()) {
        if(map.get(c) === 1) {
            return c
        }
    }

    return  " "
};
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18