题解 | #第一个只出现一次的字符# NC31
第一个只出现一次的字符
http://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c
public class Solution {
// 2、哈希
public int FirstNotRepeatingChar(String str) {
HashMap<Character, Boolean> map = new HashMap<>();
char[] chars = str.toCharArray();
for(char c : chars) {
if(map.containsKey(c)) {
map.put(c, false); // 重复 置为false
}else {
map.put(c, true); // 第一次出现
}
}
for (int i = 0; i < chars.length; i++) {
// 根据指定的k 查找对应的v 为true返回
if(map.get(chars[i])) {
return i;
}
}
return -1;
}
// 1、数组
public int FirstNotRepeatingChar1(String str) {
int[] times = new int[123];
for (int i = 0; i < str.length(); i++) {
times[str.charAt(i)]++;
}
for (int i = 0; i < str.length(); i++) {
// 遍历字符串 返回下标
if(times[str.charAt(i)] == 1) {
return i;
}
}
return -1;
}
}