剑指 Offer 50. 第一个只出现一次的字符
题目描述
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例:
s = "abaccdeff" s = ""
返回 "b" 返回 " "
解法一:哈希表或者数组
var firstUniqChar = function(s) {
const map = new Map()
for(let char of s){
if(map.has(char)){
map.set(char, map.get(char) + 1)
}else{
map.set(char, 1)
}
}
for(let key of map.keys()){
if(map.get(key) === 1){
return key
}
}
return " "
};
写法二:不支持map
function FirstNotRepeatingChar(str)
{
const map = {}
for(let i = 0; i < str.length; i++){
map[str[i]] = map[str[i]] ? map[str[i]] + 1 : 1
}
for(let i = 0; i < str.length; i++){
if(map[str[i]] === 1)
return i
}
return -1
}