剑指offer:字符流中第一个不重复的字符
来源:互联网 发布:工作台设计作图软件 编辑:程序博客网 时间:2024/06/01 09:50
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
1.用数组
思路:
1.定义两个全局变量nums和sb。
2.默认情况nums初始值全为0,当nuns[ch]为0时,说明之前没有出现过,则将其赋为1,否则ch对应的值++。
3.将sb转成char型字符数组,如果出现nums[h]==1则说明有单个字符出现则返回h。否则返回'#'。
public class Solution { int nums[]=new int[128]; StringBuffer sb=new StringBuffer(); //Insert one char from stringstream public void Insert(char ch) { sb.append(ch); if(nums[ch]==0){ nums[ch]=1; }else{ nums[ch]++; } } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { char [] c=sb.toString().toCharArray(); for(char h:c){ if(nums[h]==1) return h; } return '#'; }}
2.用LinkedHashMap
思路:和上面的差不多。用LinkedHashMap而不用HashMap的原因是LinkedHashMap是按照插入的顺序排放的。值得注意的是导包 的时候一定要导:
import java.util.LinkedHashMap;
如果直接导import java.util.*;就会报错import java.util.Map.Entry;
import java.util.LinkedHashMap;import java.util.Map.Entry;public class Solution { //Insert one char from stringstream LinkedHashMap<Character,Integer> lmap=new LinkedHashMap<>(); public void Insert(char ch) { if(lmap.containsKey(ch)){ lmap.put(ch,lmap.get(ch)+1); }else{ lmap.put(ch,1); } } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { for(Entry<Character,Integer> cc:lmap.entrySet()){ if(cc.getValue()==1)return cc.getKey(); } return '#'; }}
阅读全文
0 0
- 剑指offer--字符流中第一个不重复的字符
- 《剑指Offer》学习笔记--面试题55:字符流中第一个不重复的字符
- 剑指offer 55-字符流中第一个不重复的字符
- 【剑指Offer学习】【面试题55:字符流中第一个不重复的字符】
- 《剑指offer》字符流中第一个不重复的字符
- 剑指offer—字符流中第一个不重复的字符
- 剑指Offer--字符流中第一个不重复的字符
- 字符流中第一个不重复的字符(哈希表+vecor+剑指offer)
- 《剑指offer》——字符流中第一个不重复的字符
- 剑指offer系列之五十三:字符流中第一个不重复的字符
- 《剑指offer》——字符流中第一个不重复的字符
- 剑指offer系列之53:字符流中第一个不重复的字符
- 剑指offer-面试题55:字符流中第一个不重复的字符
- 剑指offer(57):字符流中第一个不重复的字符
- 剑指offer:字符流中第一个不重复的字符
- [剑指offer]字符流中第一个不重复的字符
- 剑指Offer——字符流中第一个不重复的字符
- 剑指Offer--055-字符流中第一个不重复的字符
- 《C++ Primer》读书笔记第三章-3-迭代器介绍
- centos安装maven环境
- jQuery实现在鼠标滚动后导航栏保持固定
- 在cocos2dx 中使用Cjson解析json数据
- Linkit Smart 7688 -- 开通两个网口
- 剑指offer:字符流中第一个不重复的字符
- Android4.4、Android5.0+状态栏颜色、透明等设置
- Quartz 2.2 的实现原理和运行过程固定时间后删除任务
- HTTPS的工作原理
- STM8的ADC的五种工作模式
- Hbase安装教程
- CopyOnWriteArrayList——写时复制的容器
- 如何理解云计算?很简单,就像吃货想吃披萨了...(转)
- POJ 1321——棋盘问题(DFS)