字符流中出現的第一個字符
阿新 • • 發佈:2019-03-31
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; }
字符流中出現的第一個字符