# 剑指50.第一个只出现一次的字符
# 题目
在字符串
s
中找出第一个只出现一次的字符。如果没有,返回一个单空格。s
只包含小写字母。
# 例子
s = "abaccdeff"
返回 "b"
s = ""
返回 " "
1
2
3
4
5
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
← 1.两数之和 241.有效的字母异位词 →