给定一个字符串 s
,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1
。
示例 1:
输入: s = "leetcode" 输出: 0s
思路:运用哈希映射
1.首先创建一个HashMap对象,其中存放字符串中 字符在字符串中出现的次数
2.这里有两次遍历
3.第一次遍历是取字符在字符串中出现的次数
4.第二次遍历是如果字符出现的次数为1,那么返回该字符对应的索引。否则返回-1;
public static int firstUniqChar(String s) {
//定义一个hashmap用来表示 字符出现的次数
HashMap<Character, Integer> frequence = new HashMap<Character, Integer>();
//有两次遍历。
// 第一次遍历是 记录每个字符出现的次数
for(int i = 0; i < s.length(); ++i){
//ch中存储的是第i个索引所对用的字符
char ch = s.charAt(i);
//ch为键 frequency.getOrDefault(ch, 0) + 1 值
//put将第i个索引对应的字符作为键 然后获取ch对应的值 作为hashMap的值插入到hashMap中
frequence.put(ch, frequence.getOrDefault(ch, 0) + 1);
}
//第二次遍历寻找字符唯一且第一次出现的字符
for(int i = 0; i < s.length(); ++i){
if (frequence.get(s.charAt(i)) == 1){
return i;
}
}
return -1;
}
一些基础知识hashMap总结:
charAt() 方法用于返回指定索引处的字符。
getOrDefault() 方法 获取指定 key 对应对 value ,如果找不到 key ,则返回设置的默认值。
getOrDefault() 方法的语法为:
hashmap.getOrDefault(Object key, V defaultValue)
put() 方法将指定的键/值对插入到 HashMap 中。
put() 方法的语法为:
hashmap.put(K key,V value)