剑指Offer(Java版)第六十题:请实现一个函数用来找出字符流中第一个只出现一次的字符。 例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。 当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。

/*
请实现一个函数用来找出字符流中第一个只出现一次的字符。
例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。
当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
*/
//输出描述:
//如果当前字符流没有存在出现一次的字符,返回#字符。

import java.util.*;

public class Class60 {

StringBuffer sb = new StringBuffer();

public void Insert(char ch){
sb.append(ch);
}

public char firstAppearingOnce(){
char[] charArray = sb.toString().toCharArray();
HashMap<Character,Integer> map = new HashMap<Character,Integer>();
int count;
for(int i = 0; i < charArray.length; i++){
if(map.containsKey(charArray[i])){
count = map.get(charArray[i]);
map.put(charArray[i], ++count);
}else{
map.put(charArray[i], i);
}
}
for(int i = 0; i < charArray.length; i++){
if(map.get(charArray[i]) == 1){
return charArray[i];
}
}
return '#';
}

public static void main(String[] args) {
// TODO Auto-generated method stub

}

}

猜你喜欢

转载自www.cnblogs.com/zhuozige/p/12548602.html