力扣Java - 387. 字符串中的第一个唯一字符
字符串中的第一个唯一字符
- 题目描述
- 示例演示
-
-
- 示例一
- 示例二
- 示例三
-
- 算法思想
- 算法代码
题目描述
- 一个字符串 s ,找到它的第一个不重复的字符(在字符串中只出现一次的字符),并返回它的索引 。如果不存在,则返回 -1 。
示例演示
示例一
输入: s = “leetcode”
输出: 0
示例二
输入: s = “loveleetcode”
输出: 2
示例三
输入: s = “aabb”
输出: -1
算法思想
- 首先统计出字符串中每个字符出现的次数,然后返回第一个出现次数为 1 的字符索引。
- 博主调用了 String 类的 toCharArray 方法将字符串转变成为了一个 char 型数组。
- 使用 HashMap 集合,key 存储字符,value 存储该字符出现的次数。
- char 型数组遍历一次即可得到每个字符在字符串中出现的次数,存储在 HashMap 集合中。
- 找出第一个次数为 1 的字符,返回其下标即可。
算法代码
class Solution { public int firstUniqChar(String s) { char[] chars = s.toCharArray(); HashMap<Character,Integer> map = new HashMap<Character, Integer>(); for (int i = 0; i < chars.length; i++){ if (!map.containsKey(chars[i])){ map.put(chars[i],1); }else { Integer num = map.get(chars[i]) + 1; map.put(chars[i],num); } } for (int i = 0; i < chars.length; i++){ if (map.get(chars[i]) == 1){ return i; } } return -1; }}