剑指offer面试题55 字符流中第一个不重复的字符(Java实现)

解题思路:

利用一个哈希表来存放字符出现的次数,键为char,值为字符出现的次数,同时利用一个集合ArrayList来存放每个出现的字符,用于在后续遍历时取到每一个字符

import java.util.ArrayList;
import java.util.LinkedHashMap;

public class Solution {
	
	//创建一个哈希表,用于存放字符流中每个字符出现的次数
	LinkedHashMap linkedHashMap = new LinkedHashMap<>();

	ArrayList arrayList = new ArrayList<>();
	
	//Insert one char from stringstream
	public void Insert(char ch) {
		
		if (linkedHashMap.containsKey(ch)) {
			Integer value = linkedHashMap.get(ch);
			value++;
			linkedHashMap.put(ch, value);
		} else {
			linkedHashMap.put(ch, 1);
		}
		
		arrayList.add(ch);
		
	}

	// return the first appearence once char in current stringstream
	public char FirstAppearingOnce() {
		
		for (int i = 0 ; i < arrayList.size(); i++) {
			Character ch = arrayList.get(i);
			if (linkedHashMap.get(ch) == 1) {
				return ch;
			}
		}
		
		return '#';
		
	}

}


你可能感兴趣的:(剑指offer面试题)