【力扣】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 小时前
使用`mysql_*`废弃函数(PHP7+完全移除,导致代码无法运行)
后端·算法
木心月转码ing6 小时前
Hot100-Day10-T438T438找到字符串中所有字母异位词
算法
HelloReader7 小时前
Wi-Fi CSI 感知技术用无线信号“看见“室内的人
算法
颜酱9 小时前
二叉树分解问题思路解题模式
javascript·后端·算法
qianpeng89711 小时前
水声匹配场定位原理及实验
算法
董董灿是个攻城狮1 天前
AI视觉连载8:传统 CV 之边缘检测
算法
AI软著研究员1 天前
程序员必看:软著不是“面子工程”,是代码的“法律保险”
算法
FunnySaltyFish1 天前
什么?Compose 把 GapBuffer 换成了 LinkBuffer?
算法·kotlin·android jetpack
颜酱1 天前
理解二叉树最近公共祖先(LCA):从基础到变种解析
javascript·后端·算法
地平线开发者2 天前
SparseDrive 模型导出与性能优化实战
算法·自动驾驶