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

来源:互联网 发布:淘宝2017双十一 编辑:程序博客网 时间:2024/06/08 01:18

解题思路:

   1.用数组来保存字符出现的次数,数组的下标对应相应的字符。

   2.用队列来保存第一次出现的字符。

   3.从队列的队头开始判断,如果队头字符所对应的出现次数不为1,则删除对头,判断下一个,否则,队头的字符就是第一个不重复的字符。


class Solution{public:    int arr[256];    queue<char> q;      Solution()    {    //初始化为0      //  memset(arr,0,sizeof(arr));            for(int i=0;i<256;++i)            arr[i]=0;            }  //Insert one char from stringstream    void Insert(char ch)    {        arr[ch-'\0']+=1;    //'\0'的ASCII为0,'0'的ASCII为48        if(arr[ch-'\0']==1) //第一次出现        {q.push(ch);                    }    }  //return the first appearence once char in current stringstream    char FirstAppearingOnce()    {    while(!q.empty()&&(arr[q.front()-'\0']>=2))             q.pop();         if(q.empty())              return '#';        return q.front();               }};


阅读全文
0 0
原创粉丝点击