剑指offer-字符流中第一个不重复的字符

    xiaoxiao2023-10-16  29

    48.字符流中第一个不重复的字符

    题目内容:

    代码及思路:

    看到题目第一个会想到说用哈希表来做。

    #include<iostream> #include<unordered_map> #include<deque> #include<string> using namespace std; class Solution { public: void Insert(char ch) //将所有出现的字符输入到data中 { hash[ch - '\0']++; if (hash[ch - '\0'] == 1) data.push_back(ch); } char FirstAppearingOnce() //字符输出 { while (!data.empty() && hash[data.front()] >= 2) //对于出现过1次以上的字符,弹出不要 data.pop_front(); if (data.empty()) return '#'; //如果当前字符流没有存在出现一次的字符,返回#字符 return data.front(); //余下的就是只出现一次的字符 } private: unordered_map<char, int> hash; //输出时先出现的字符先出因此使用队列,先进先出的特点 deque<char> data; }; void main() { Solution* object = new Solution; string str1; getline(cin, str1); for (int i = 0; i < str1.length(); i++) { object->Insert(str1[i]); } char res = object->FirstAppearingOnce(); cout << res << endl; }

     

    最新回复(0)