剑指 Offer 50. 第一个只出现一次的字符 - Touale Cula's Blog

题目内容

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

1
2
3
4
5
6
7
8
9
10
11
12
13
示例 1:

输入:s = "abaccdeff"
输出:'b'
示例 2:

输入:s = ""
输出:' '
 

限制:

0 <= s 的长度 <= 50000

解法一: 哈希表(暴力法)

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

class Solution {
public:
char firstUniqChar(string s) {
unordered_map<char,int> cmap;

for(char c:s){
cmap[c] +=1;
}

for(char c:s){
if(cmap[c] ==1)
return c;
}

return ' ';
}
};

结果:

1
2
3
4
5
6
7
8
9
10
11
12
执行用时:
36 ms
, 在所有 C++ 提交中击败了
55.09%
的用户
内存消耗:
10.5 MB
, 在所有 C++ 提交中击败了
42.52%
的用户
通过测试用例:
105 / 105