1. 程式人生 > >劍指offer-字符流中第一個不重復的字符

劍指offer-字符流中第一個不重復的字符

contains ring rac 只讀 google 劍指offer pan con put

題目描述:請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"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 }

劍指offer-字符流中第一個不重復的字符