题目
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例 :
s = “leetcode”
返回 0
s = “loveleetcode”
返回 2
提示: 你可以假定该字符串只包含小写字母。
标签
字符串;哈希表
解题思路
方法:哈希表
先将每个字符出现的次数统计到哈希映射中,再进行第二次遍历,找出只出现一次的字符,返回其索引即可。
代码
public class Leetcode387_FirstUniqueCharacterIn_a_String {
public static void main(String[] args) {
String s = "leetcode";
System.out.println(Leetcode387_FirstUniqueCharacterIn_a_String.firstUniqChar(s));
//System.out.println(s.length()); //8
}
public static int firstUniqChar(String s) {
int len = s.length();
Map<Character, Integer> map = new HashMap<>();
//构建每个字符与出现次数的哈希映射
for (int i = 0; i < len; i++) {
// int count = map.get(s.charAt(i));
//当Map集合中有这个key时,就使用这个key对应的value值,如果没有就使用默认值defaultValue
map.put(s.charAt(i), map.getOrDefault(s.charAt(i), 0) + 1);
}
//遍历找第一个不重复的索引
for (int i = 0; i < len; i++) {
int count = map.get(s.charAt(i));
if (count == 1) {
return i;
}
}
return -1;
}
}
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/first-unique-character-in-a-string/