剑指offer——字符流中第一个不重复的字符
2016-07-19 22:32
260 查看
问题描述:
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
思路:
用HashMap保存已经出现的字符,另外再用一个ArrayList集合来存储只出现一次的字符,其中集合的第一个必然是第一个不重复的字符。代码实现:
import java.util.HashMap; import java.util.ArrayList; import java.util.Map; import java.util.List; public class Solution { //创建一个HashMap用于保存每个字符的次数 Map<Character, Integer> map = new HashMap<Character, Integer>(); //创建一个List集合用于接收字符流中的字符 List<Character> list = new ArrayList<Character>(); //Insert one char from stringstream //从字符流中插入字符到集合和Map中 public void Insert(char ch) { if(!map.containsKey(ch)){ map.put(ch,1); list.add(ch); }else{ map.put(ch,map.get(ch)+1); if(list.contains(ch)){ list.remove(Character.valueOf(ch)); } } } //return the first appearence once char in current stringstream //得到第一个只出现一次的字符 public char FirstAppearingOnce() { if(list.isEmpty()) return '#'; return list.get(0); } }
相关文章推荐
- Javascript当中新增的几个实用操作数组的方法
- 把json数据 [ { } ] 转为数组
- 有关json数据
- javascript基础:Ajax
- WPF的Datagrid显示,样式(隔行换色)
- javascript中数组和字符串的方法比较
- HTML标签
- (一)html语法和基本结构
- 剑指offer 42题 【知识迁移能力】翻转单词顺序列
- jsp+servlet用底层代码实现文件上传下载
- 强大的js事件委托
- CSS样式
- Jquery validation自定义验证
- javascript特效实现(4)——当前时间和倒计时效果
- HTML中的表单
- jQuery中this与$(this)的区别总结
- js实现文件上传—带进度条
- JS的循环语句
- 实现jQuery底层链式编程(一)
- JavaScript基础(一)