在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
public int FirstNotRepeatingChar(String str) {
//用HashMap保存每一个字符的出现次数,因为HashMap读取复杂度为 O(1)
HashMap<Character, Integer> map = new HashMap<>();
for(int i=0; i<str.length() ;i++) {
Character character = str.charAt(i);
Integer integer = map.get(character);
if(integer != null) {
map.put(character, integer+1);
} else {
map.put(character, 1);
}
}
//为了找出第一个出现次数为1的字符,遍历原字符串
for(int i=0; i<str.length() ;i++) {
Character character = str.charAt(i);
if(map.get(character)==1)
return i;
}
return -1;
}