算法1
(哈希表)
如果这个题来看题解的童鞋,要自己去好好复习一下数据结构了~~~~
直接用哈希表保存每个字符出现的次数,然后再从头遍历字符串,遇到只出现一次的,输出即可
Java 代码
class Solution {
public char firstNotRepeatingChar(String str) {
HashMap<Character,Integer> map = new HashMap<>();
for (int i = 0; i < str.length(); i++) {
if(!map.containsKey(str.charAt(i))){
map.put(str.charAt(i),1);
}else {
int count = map.get(str.charAt(i))+1;
map.put(str.charAt(i),count);
}
}
for(int i = 0; i < str.length();i++){
if(map.get(str.charAt(i))==1){
return str.charAt(i);
}
}
return '#';
}
}
你好,我觉得你这边的Map,应该用实现类LinkedHashMap,而不是HashMap,因为前者是存取有序的,而后者不是,所以使用后者的话并不能一定保证遍历一遍,第一次出现次数为1的就是答案。
你说的对 HashMap是取元素不一定跟存入元素顺序一致的 因此是无序的
但是这里HashMap只是用于统计每个字母的出现次数 后面的顺序(保证是第一个)是靠遍历原来字符串来保证的