您的位置:首页 > Web前端

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

2017-05-18 00:54 351 查看
解题思路:

   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();

}

};
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  字符流 剑指offer