(劍指offer)字元流中第一個不重複的字元
阿新 • • 發佈:2018-12-09
時間限制:1秒 空間限制:32768K 熱度指數:91819
本題知識點: 字串
題目描述
請實現一個函式用來找出字元流中第一個只出現一次的字元。例如,當從字元流中只讀出前兩個字元"go"時,第一個只出現一次的字元是"g"。當從該字元流中讀出前六個字元“google"時,第一個只出現一次的字元是"l"。
輸出描述:
如果當前字元流沒有存在出現一次的字元,返回#字元。
注意
要用LinkedHashMap,確保按照順序進入map,然後找到當前第一個出現一次的字元
import java.util.*;
public class Solution {
//Insert one char from stringstream
private LinkedHashMap<Character, Integer> map = new LinkedHashMap<Character, Integer>();
public void Insert(char ch)
{
if(map.containsKey(ch)){
map.put(ch, map.get(ch)+1);
}else{
map.put(ch, 1);
}
}
//return the first appearence once char in current stringstream
public char FirstAppearingOnce()
{
Iterator it = map.entrySet().iterator();
while(it.hasNext()){
Map.Entry entry = (Map.Entry)it.next();
Character key = (Character)entry.getKey();
Integer value = (Integer)entry.getValue();
if(value == 1){
return key;
}
}
return '#';
}
}