剑指 Offer 50. 第一个只出现一次的字符
在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包含小写字母。
示例 1:
输入:s = "abaccdeff"
输出:'b'
示例 2:
输入:s = ""
输出:' '
限制:
0 <= s 的长度 <= 50000
方法一:indexof命令
var firstUniqChar = function(s) {
for (let i = 0; i < s.length; i++) {
k = s.indexOf(s[i]);
e = s.indexOf(s[i], k + 1);
if (e == -1) return s[i];
}
return ' ';
};
方法二:map
function firstUniqChar(s: string): string {
let map= new Map();
//1.统计每个字符出现的次数
for (let i of s) {
if (!map.has(i)) {
map.set(i, 1);
} else {
map.set(i, map.get(i) + 1);
}
}
//2.返回出现次数为1的即可
for (let i of s) {
if (map.get(i) === 1) {
return i;
}
}
return ' ';
};
方法三:第一次出现的索引和做后一次出现的索引相同便返回
for (let i of s) {
if (s.indexOf(i) === s.lastIndexOf(i)) return i;
}
return ' ';