🤖
AI审核中

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

文章摘要

本文介绍了在长度≤10000、仅含字母的字符串中查找首个仅出现一次字符并返回其索引(若不存在返回-1)的算法要求,时间复杂度O(n)、空间复杂度O(n)。示例:“google”返回4,“aa”返回-1。提供的Java解法先用HashMap统计每个字符出现次数,再遍历字符串找到首次出现次数为1的字符并返回其下标,若未找到则返回-1。

题目链接: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 条评论

如果你觉得文章对你有帮助,那就请作者喝杯咖啡吧

评论区 0

头像
 0 条评论