【力扣】387.字符串中的第一个唯一字符

问题描述

思路解析

  • 对于这种个数有限的问题,我的第一想法是使用桶排序来解决
  • 因为s中只有小写英文单词,所以我只需要一个26个单位的数组就好了
  • 通过 charAt() 来提取单个字符,然后通过 -'a' 来将其映射到 0~25,不然数组长度就被超过了
  • 之后再++,最后再遍历一遍,只要==1 ,则代表只出现一次
  • 需要注意的是,不能直接在 数组 char[0]~char[25]之间遍历,因为这样模糊了前后关系,就没办法知道哪个是第一个出来的了

代码

java 复制代码
class Solution {
    public int firstUniqChar(String s) {
        /**
            想法是用字符串数组来存储
            char[s.charAt()]++ 来代表
            并且只有小写数组,所以可以遍历
            char[a]~char[z],不对,这样遍历,会找不出,第一个不重复的,打乱了顺序
            还是得循环字符串的来寻找
         */
        int n=s.length();
        int[] arr=new int[26];
        for(int i=0;i<n;i++){
            arr[s.charAt(i)-'a']++;
        }
        for(int i=0;i<n;i++){
            if(arr[s.charAt(i)-'a']==1)
                return i;
        }
        return -1;
    }
}
相关推荐
深圳佛手1 天前
几种限流算法介绍和使用场景
网络·算法
陌路201 天前
S14排序算法--基数排序
算法·排序算法
ysa0510301 天前
虚拟位置映射(标签鸽
数据结构·c++·笔记·算法
Yue丶越1 天前
【C语言】深入理解指针(二)
c语言·开发语言·数据结构·算法·排序算法
m0_748248021 天前
C++中的位运算符:与、或、异或详解
java·c++·算法
沐浴露z1 天前
详解【限流算法】:令牌桶、漏桶、计算器算法及Java实现
java·算法·限流算法
王哈哈^_^1 天前
【完整源码+数据集】草莓数据集,yolov8草莓成熟度检测数据集 3207 张,草莓成熟度数据集,目标检测草莓识别算法系统实战教程
人工智能·算法·yolo·目标检测·计算机视觉·视觉检测·毕业设计
程序员东岸1 天前
数据结构杂谈:双向链表避坑指南
数据结构·链表
油泼辣子多加1 天前
【实战】自然语言处理--长文本分类(3)HAN算法
算法·自然语言处理·分类
Shinom1ya_1 天前
算法 day 46
数据结构·算法