题解 | #字符流中第一个不重复的字符#

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

https://www.nowcoder.com/practice/00de97733b8e4f97a3fb5c680ee10720

字符流中第一个不重复的字符:最直观的想法是,使用map存储当前字符以及其出现的次数,然后再遍历一次字符串,找出只出现一次的字符并返回,若没有则返回#,两次遍历字符串可以保证字符是按照先后顺序出现的。该题将插入字符和查找第一个只出现一次的字符这两者分开了,故遍历一次字符串即可。注意map可以直接map[键]=值的喔,这样可以简化运算!

// <字符,出现的次数>
unordered_map<char,int> umap;
// 输入的字符串
string s;
//Insert one char from stringstream
void Insert(char ch) 
{
   // 插入字符
   s+=ch;
   // 字符出现的次数加一
   umap[ch]++;
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce() 
{
    for(int i=0;i<s.size();i++)
    	// 找到只出现一次的字符并返回
        if(umap[s[i]]==1)
          return s[i];
    // 否则返回#
    return '#';
}

#字符流中第一个不重复的字符#
剑指offer 文章被收录于专栏

剑指offer专栏主要分享剑指offer题解。

全部评论

相关推荐

Lorn的意义:1.你这根本就不会写简历呀,了解太少了 2.你这些项目经历感觉真的没啥亮点啊,描述的不行,重写书写一下让人看到核心,就继续海投 注意七八月份ofer还是比较多的,越往后机会越少,抓住时机,抓紧检查疏漏,加油查看图片
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务