题目分析:[[EVD]] - 剑指 Offer 50. 第一个只出现一次的字符
https://leetcode-cn.com/problems/di-yi-ge-zhi-chu-xian-yi-ci-de-zi-fu-lcof/
简单描述:
- 在字符串 s 中找出第一个只出现一次的字符
限制🚫
- 0 <= s 的长度 <= 50000
- s 只包含小写字母
示例:
输入:s = "abaccdeff"
输出:'b'输入:s = ""
输出:' '
解题思路:
思路:
- #哈希表
- 使用unordered_map函数(底层实现为哈希表) #[[C++ STL]]
- 使用int定长数组,字符转成int存储,只需26个字母空间(s只包含小写字母)
- 为了降低第二轮遍历原串的时间,可以用空间换时间,增添一个vector数组来有序保存哈希表
效率:
- 时间复杂度
- 空间复杂度
代码:
class Solution
{
public:
char firstUniqChar(string s)
{
unordered_map<char, bool> map;
for (auto i : s)
map[i] = map.find(i) == map.end();
for (auto i : s)
if (map[i])
return i;
return ' ';
};
};