题目描述
在字符串中找出第一个只出现一次的字符。
如输入
"abaccdeff"
,则输出b
。如果字符串中不存在只出现一次的字符,返回
#
字符。
数据范围
输入字符串长度 [0,1000]。
样例:
输入:"abaccdeff" 输出:'b'
方法一:哈希表 O(n)
利用哈希表快速查找性质,可以找到对应元素。步骤如下:
- 先遍历一遍所有字符,用哈希表存下每个字符出现了多少次。
- 然后再遍历一遍所有字符,去查询该字符在哈希表中出现的次数。如果能找到
hash[i] == 1
即只出现了一次的字符,就输出该字符。 - 如果没有找到只出现一次的字符,就返回
#
。
class Solution { public: char firstNotRepeatingChar(string s) { map<char, int> hash; for (auto i : s) hash[i]++; for (auto i : s) if (hash[i] == 1) return i; return '#'; } };
欢迎大家在评论区交流~