劍指offer17

題目描述

請實現一個函數用來找出字符流中第一個只出現一次的字符。例如,當從字符流中只讀出前兩個字符"go"時,第一個只出現一次的字符是"g"。當從該字符流中讀出前六個字符「google"時,第一個只出現一次的字符是"l"。java

解題思路分析

其實這道題挺簡單的,分兩步能夠作到函數

  • 先能夠考慮使用一個HashMap來存儲,將字符做鍵,出現次數當值,同時將字符加到List中,用來獲得第一個出現一次的字符

代碼實現

Map<Character, Integer> map = new HashMap<>();
List<Character> list = new ArrayList<>();

public void insert(char ch) {
    if (map.containsKey(ch)) {
        map.put(ch, map.get(ch) + 1);
    } else {
        map.put(ch, 1);
    }
    list.add(ch);
}

public char firstAppearingOnce() {
    char c = '#';
    for (char i : list) {
        if (map.get(i) == 1) {
            c = i;
            break;
        }
    }
    return c;
}
複製代碼
相關文章
相關標籤/搜索