题目描述:请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
ac代码:
1 import java.util.ArrayList; 2 import java.util.Arrays; 3 import java.util.HashMap; 4 import java.util.Map; 5 public class Solution { 6 //Insert one char from stringstream 7 ArrayList<Character>list=new ArrayList<Character>(); 8 Map<Character,Integer>map=new HashMap<Character,Integer>(); 9 char c; 10 public void Insert(char ch) 11 { 12 list.add(ch); 13 if(map.containsKey(ch)){ 14 map.put(ch,map.get(ch)+1); 15 }else{ 16 map.put(ch,1); 17 } 18 boolean flag=false; 19 for(int i=0;i<list.size();i++){ 20 if(map.get(list.get(i))==1){ 21 c=list.get(i); 22 flag=true; 23 break; 24 } 25 26 } 27 if(!flag) 28 c='#'; 29 } 30 //return the first appearence once char in current stringstream 31 public char FirstAppearingOnce() 32 { 33 return c; 34 } 35 }