【力扣】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;
    }
}
相关推荐
糖葫芦君5 分钟前
TRPO-trust region policy optimization论文讲解
人工智能·算法·机器学习·强化学习
HaiLang_IT21 分钟前
基于RepVGG与注意力机制的手写潦草汉字识别算法研究
算法
Chan1622 分钟前
【 微服务SpringCloud | 模块拆分 】
java·数据结构·spring boot·微服务·云原生·架构·intellij-idea
一起努力啊~23 分钟前
算法刷题--字符串
算法
独断万古他化23 分钟前
【二分算法 深度解析】二段性思维与经典题型全通关
java·算法
啊阿狸不会拉杆28 分钟前
《数字图像处理》第 10 章 - 图像分割
图像处理·人工智能·深度学习·算法·计算机视觉·数字图像处理
早川91928 分钟前
9种常用排序算法总结
数据结构·算法·排序算法
卷毛迷你猪29 分钟前
小肥柴慢慢手写数据结构(C篇)(2.1.1 动态数组(ArrayList))
c语言·数据结构
Yupureki41 分钟前
《算法竞赛从入门到国奖》算法基础:入门篇-离散化
c语言·数据结构·c++·算法·visual studio
散峰而望43 分钟前
OJ 题目的做题模式和相关报错情况
java·c语言·数据结构·c++·vscode·算法·visual studio code