博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[剑指offer] 字符流中第一个不重复的字符
阅读量:6937 次
发布时间:2019-06-27

本文共 971 字,大约阅读时间需要 3 分钟。

本文首发于我的个人博客:

题目描述

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

解题思路

用一个哈希表来存储每个字符及其出现的次数,另外用一个字符串 s 来保存字符流中字符的顺序。

  • 每次插入的时候,在字符串 s 中插入该字符,然后在哈希表中查看是否存在该字符,如果存在则它的 value 加1,如果不存在,它在哈希表中插入该字符,它的 value 为 1。
  • 查找第一个只出现一次的字符时,按照 s 的顺序,依次查找 map 中字符出现的次数,当 value 为 1 时,该字符就是第一个只出现一次的字符。

参考代码

import java.util.HashMap;public class Solution {    HashMap
map = new HashMap
(); StringBuffer s = new StringBuffer(); //Insert one char from stringstream public void Insert(char ch) { s.append(ch); if(map.containsKey(ch)){ map.put(ch, map.get(ch)+1); }else{ map.put(ch, 1); } } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { for(int i = 0; i < s.length(); i++){ if(map.get(s.charAt(i)) == 1) return s.charAt(i); } return '#'; }}

转载地址:http://xpbnl.baihongyu.com/

你可能感兴趣的文章
C# internal关键字
查看>>
RocketMQ集群搭建
查看>>
CentOS 6.3 配置 zabbix
查看>>
洪水***怎么办?
查看>>
Qemu&KVM第二篇之(5)Libvirt 相关问题
查看>>
总结和规划
查看>>
怎么复制磁盘里的数据?
查看>>
MySQL 使用127.0.0.1 链接不上
查看>>
用户层修改peb实现隐藏一些东西
查看>>
java设计模式
查看>>
刷新网卡ip
查看>>
侦听服务端口
查看>>
HDOJ 1005 Number Sequence
查看>>
SHELL训练营--day6__shell脚本(2)
查看>>
zabbix 监控硬盘状态
查看>>
关于Cpp中的extern
查看>>
APUE读书笔记-14高级输入输出-07readv和writev函数
查看>>
关于Linux的内存(free -m)
查看>>
修改linux系统配置文件 /etc/inittab 默认从字符界面启动系统
查看>>
Servlet过滤器和监听器知识总结
查看>>