剑指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 '#';
}
}
利用一个哈希表来存放字符出现的次数,键为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 '#';
}
}
相关文章推荐
- 【剑指offer——JAVA实现】字符流中第一个不重复的字符
- 剑指offer-面试题55-字符流中第一个不重复的字符
- 剑指offer_面试题55_字符流中第一个不重复的字符 *
- 剑指offer----字符流中第一个不重复的字符----java实现
- 【剑指Offer学习】【面试题55:字符流中第一个不重复的字符】
- 剑指offer 面试题55 字符流中第一个不重复的字符
- 【剑指Offer】面试题55:字符流中第一个不重复的字符
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- <剑指offer 面试题3> 数组中重复的数字(Java实现)
- 剑指Offer面试题35(java版):第一个只出现一次的字符
- 【剑指Offer学习】【面试题55:字符流中第一个不反复的字符】
- 剑指Offer面试题57:删除重复链表 Java实现
- 剑指offer----第一个只出现一次的字符位置----java实现
- 剑指Offer--面试题18:数的子结构--Java实现
- 剑指offer--面试题22:栈的压入、弹出序列--Java实现
- 剑指offer--面试题16:翻转链表--Java实现
- 剑指Offer--面试题17:合并两个排序的链表--Java实现
- 剑指offer--面试题23:从上往下打印二叉树--Java实现
- 用java实现,查找字符串中第一个没有重复出现的字符
- 《剑指Offer》学习笔记--面试题55:字符流中第一个不重复的字符