您的位置:首页 > 职场人生

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

2017-07-20 10:12 429 查看
解题思路:

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

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

public class Solution {

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

ArrayList<Character> 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 '#';

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息