1. 程式人生 > >字符流中出現的第一個字符

字符流中出現的第一個字符

ava one ear ack 自己實現 ascii碼 == clas 第一個字符

 1 package algorithms;
 2 
 3 import java.util.HashMap;
 4 
 5 public class FirstAppearingOnce {
 6     HashMap<Character,Integer> hm = new HashMap<>();
 7     StringBuffer sb = new StringBuffer();
 8     //Insert one char from stringstream
 9     public void Insert(char ch)
10     {
11 if(hm.containsKey(ch)) { 12 hm.put(ch, hm.get(ch)+1); 13 }else { 14 hm.put(ch, 1); 15 } 16 sb.append(ch); 17 } 18 //return the first appearence once char in current stringstream 19 public char FirstAppearingOnce_1() 20 {
21 char[] str = sb.toString().toCharArray(); 22 for(int i=0;i<str.length;i++) { 23 if(hm.get(str[i])==1) { 24 return str[i]; 25 } 26 } 27 return ‘#‘; 28 } 29 }

其實也可以自己實現一個簡易的hashmap用來解決該道題

因為char(8位)有256種取值 所以可以創建一個長度為256的數組 數組的下標即為ascii碼值 數組的值即為出現的次數,如下所示:

int[] arr = new int[256];
    StringBuffer s = new StringBuffer();
    //Insert one char from stringstream
    public void Insert(char ch)
    {
        s.append(ch);
        arr[ch] +=1;
    }

字符流中出現的第一個字符