本文共 929 字,大约阅读时间需要 3 分钟。
哈希表
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符 “go” 时,第一个只出现一次的字符是 “g”。当从该字符流中读出前六个字符 “google" 时,第一个只出现一次的字符是 “l”。
如果当前字符流没有存在出现一次的字符,返回 # 字符。
public class Solution { String str = ""; public void Insert(char ch) { str += ch; } public char FirstAppearingOnce() { // 用 HashMap 建立每个字符与其出现次数的映射 HashMaphashMap = new HashMap<>(); for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); hashMap.put(c, hashMap.getOrDefault(c, 0) + 1); } // 依次遍历字符串,找到第一个出现次数为 1 的字符,返回该字符 for (int i = 0; i < str.length(); i++) { char c = str.charAt(i); if (hashMap.get(c) == 1) { return c; } } // 如果当前字符流没有存在出现一次的字符,返回 # 字符 return '#'; }}
转载地址:http://qbjvb.baihongyu.com/