本题为剑指offer面试题55
牛客网测试地址:https://www.nowcoder.com/questionTerminal/00de97733b8e4f97a3fb5c680ee10720
[编程题]字符流中第一个不重复的字符
- 热度指数:26323 时间限制:1秒 空间限制:32768K
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
package go.jacob.day531;
public class Demo3 {
//字符范围(转int后):-128~127
int[] hash=new int[256];
StringBuilder sb=new StringBuilder();
//Insert one char from stringstream
public void Insert(char ch){
hash[ch+128]++;
sb.append(ch);
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce(){
for(char s:sb.toString().toCharArray())
if(hash[s+128]==1)
return s;
return '#';
}
}