> 文档中心 > 力扣Java - 387. 字符串中的第一个唯一字符

力扣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;    }}