题目描述
请实现一个函数用来找出字符流中第一个只出现一次的字符。例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。
输出描述:
如果当前字符流没有存在出现一次的字符,返回#字符。
import java.util.ArrayList; import java.util.HashMap; /** * * @author gentleKay * * 题目描述 * 请实现一个函数用来找出字符流中第一个只出现一次的字符。 * 例如,当从字符流中只读出前两个字符"go"时,第一个只出现一次的字符是"g"。 * 当从该字符流中读出前六个字符“google"时,第一个只出现一次的字符是"l"。 * * 输出描述: * 如果当前字符流没有存在出现一次的字符,返回#字符。 */ public class Main53 { static HashMap<Character, Integer> map = new HashMap<>(); static ArrayList<Character> array = new ArrayList<>(); public static void main(String[] args) { Insert('a'); Insert('b'); Insert('a'); Insert('b'); char ch = Main53.FirstAppearingOnce(); System.out.println(ch); } //Insert one char from stringstream public static void Insert(char ch){ if (map.containsKey(ch)) { map.put(ch, map.get(ch)+1); }else { map.put(ch, 1); } array.add(ch); } //return the first appearence once char in current stringstream public static char FirstAppearingOnce(){ for (char key : array) { if (map.get(key) == 1) { return key; } } return '#'; } }