题目描述

请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

输出描述:

如果当前字符流没有存在出现一次的字符,返回#字符。

题解:
  使用哈希表记录每个字母出现的次数,当选中的字母为重复时,就像后寻找未重复的字母
 class Solution
{
public:
//Insert one char from stringstream
void Insert(char ch)
{
str += ch;
word[ch]++;
if (res == '#' && word[ch] == )//新的字母
res = ch;
if (word[res] > )//重复了
{
res = '#';
for (int i = index; i < str.length(); ++i)//先后寻找未重复的字母
{
if (word[str[i]] == )
{
res = str[i];
index = i;
break;
}
}
}
}
//return the first appearence once char in current stringstream
char FirstAppearingOnce()
{
return res;
}
private:
string str = "";
int word[] = { };
int index = ;
char res = '#';
};

最新文章

  1. VB 中Sub和Function的区别
  2. 1.15 kickstart rpm yum
  3. Yocto开发笔记之《Tip-bitbake常用命令》(QQ交流群:519230208)
  4. javascript void运算符
  5. Java中的Double类型计算
  6. 推荐一个代码生成工具:freemarker
  7. [摘]string.jion() 解决办法
  8. poj 2418 Hardwood Species (map)
  9. java学习之反射机制
  10. dedecms _ 栏目无法更新
  11. svn由于连接方在一段时间后没有正确答复或连接的主机没有反应连接尝试失败
  12. C/C++ 笔试、面试题目大汇总(转)
  13. hdu 4691 Front compression (后缀数组)
  14. hdu 1859 最小长方形
  15. linux命令每日一练:find与rm实现查找并删除目录或文件
  16. YCSB测试HBase远程完全分布式集群
  17. ELK学习记录二 :elasticsearch、logstash及kibana的安装与配置
  18. word文档最上面有一条不是页眉的线
  19. 增加 jQueryValidate的手机号验证功能
  20. centos6.5环境openldap实战之ldap配置详解及web管理工具lam(ldap-account-manager)使用详解

热门文章

  1. mongo大数据量更新服务端超时解决: Cursor not found, cursor id: 82792803897
  2. js千位符 | js 千位分隔符 | js 金额格式化
  3. 本地安装了flash,前台浏览器还显示需要安装flash?是因为版本需要对应
  4. POJ 1797 Heavy Transportation (Dijkstra)
  5. 如何安装python运行环境Anaconda
  6. a标签动态修改手机号跳到拨打界面
  7. shell变量的间接引用
  8. Android 5.1 预制输入法
  9. linux学习总结--linux100day(day1)
  10. 【精通css读书笔记】 第八章 布局