NC31 第一个只出现一次的字符

  算法   2分钟   348浏览   0评论

题目链接:https://www.nowcoder.com/practice/1c82e8cf713b4bbeb2a5b31cf5b0417c

题目描述

在一个长为 字符串中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).(从0开始计数)

数据范围:0 ≤ n ≤10000,且字符串只有字母组成。

要求:空间复杂度 O(n),时间复杂度 O(n)

示例 1:

输入:"google"
返回值:4

示例 2:

输入:"aa"
返回值:-1

解题代码

import java.util.HashMap;

public class Solution {
    public int FirstNotRepeatingChar(String str) {
        HashMap<Character, Integer> mp = new HashMap<>();
        //统计每个字符出现的次数
        for (int i = 0; i < str.length(); i++)
            mp.put(str.charAt(i), mp.getOrDefault(str.charAt(i), 0) + 1);
        //找到第一个只出现一次的字母
        for (int i = 0; i < str.length(); i++)
            if (mp.get(str.charAt(i)) == 1)
                return i;
        //没有找到
        return -1;
    }
}

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧☕
微信
支付宝
  0 条评论