- 题目:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
- 思路:
- 使用map直接统计字符流出现的字符次数
- 启发或者坑:
- 遍历字符串,找到字符次数为1的字符;不能遍历map,因为map中字符出现一次,但不一定是第一次出现的
- 代码:
class Solution { public: map<char, int> mark; string strStream = ""; //Insert one char from stringstream void Insert(char ch) { strStream += ch; map<char, int>::iterator it; it = mark.find(ch); if (it == mark.end()) { mark.insert(make_pair(ch, 1)); } else { mark[ch]++; } } //return the first appearence once char in current stringstream char FirstAppearingOnce() { for (int i = 0; i < strStream.size(); i++) { if (mark[strStream[i]] == 1) return strStream[i]; } return '#'; } };
剑指offer 51. 字符流中第一个不重复的字符
猜你喜欢
转载自blog.csdn.net/Alexia23/article/details/104093632
今日推荐
周排行