字符流中第一个不重复的字符
来源:互联网 发布:开展数据库培训 编辑:程序博客网 时间:2024/06/16 09:02
题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符”go”时,第一个只出现一次的字符是”g”。当从该字符流中读出前六个字符“google”时,第一个只出现一次的字符是”l”。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
算法描述:
我们只考虑英文字符(ascii),里边只有0-255个字符,所以我们可以建立一个int[] charTable = new int[255]
,如果是第一次扫描到该字符,则在数组中将对应的位置上记录下字符出现的顺序,如果是第二次出现该字符,则将该字符设为-1,这样当字符流结束的时候,选取出出现位置最早的一个字符。
代码如下:
int[] charTable = new int[255]; int index = 1; //Insert one char from stringstream public void Insert(char ch) { if (charTable[ch] == 0){ charTable[ch] = index; }else{ charTable[ch] = -1; } index ++; } //return the first appearence once char in current stringstream public char FirstAppearingOnce() { char ch = '#'; int minPos = -1; for (int i = 0; i < charTable.length; i++) { if (charTable[i] > 0){ if (minPos == -1){ minPos = i; }else if (charTable[i] < charTable[minPos]){ minPos = i; } } } if (minPos != -1){ return (char) minPos; }else{ return ch; } }
0 0
- 字符流中第一个不重复的字符
- 55 - 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 【算法】字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符 java
- 字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- 字符串------字符流中第一个不重复的字符
- 【53】字符流中第一个不重复的字符
- 字符流中第一个不重复的字符
- Q55:字符流中第一个不重复的字符
- Ubuntu+CUDA+OpenCV+Caffee安装
- Opencv中访问图像数据类型
- VR系列——Oculus最佳实践:一、最佳实践简介
- 1011. World Cup Betting
- 关于css渐变的一些收集
- 字符流中第一个不重复的字符
- Android Studio SVN使用
- 【Hibernate】——Junit测试
- iOS深入学习(Block全面分析)
- 1012. The Best Rank
- bzoj3172 [Tjoi2013]单词
- centos修改系统语言为英语
- MyBatis 教程 - MyBatis插件(Plugins)开发
- HTCVive VR开发场景事件交互指南