当前位置: 首页 > article >正文

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

问题描述

思路解析

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

代码

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;
    }
}


http://www.kler.cn/a/418757.html

相关文章:

  • 分享一款 Vue 图片编辑插件 (推荐)
  • 开源 - Ideal库 - Excel帮助类,TableHelper实现(三)
  • Unity世界坐标转屏幕坐标报错解决办法。
  • Vue中实现函数限流:节流和防抖
  • EasyDarwin搭建直播推流服务
  • 给定一个整数可能为正,0,负数,统计这个数据的位数.
  • VPC9527同步整流控制器,相对最大电压检测与强力自供电,与MP6908完全PIN TO PIN
  • Unity XR Interaction Toolkit 开发教程:手柄追踪【3.0以上版本】
  • MFC 实现按钮按下持续执行
  • Linux驱动开发第3步_INPUT子系统框架下的外部中断
  • HarmonyOS(61) 组件间状态共享的分类以及状态选择器的选取优先级
  • Android Glide批量加载Bitmap,拼接组装大Bitmap,更新单个AppCompatImageView,Kotlin(3)
  • 【element-tiptap】导出word
  • 在CentOS 7上设置Apache的mod_rewrite的方法
  • 【数据结构计数排序】计数排序
  • Java面经之JVM
  • Qt Sensors 传感器控制介绍篇
  • 【JAVA】IntelliJ IDEA 如何创建一个 Java 项目
  • Vue3+node.js实现注册
  • (免费送源码)计算机毕业设计原创定制:Apache+JSP+Ajax+Springboot+MySQL Springboot自习室在线预约系统
  • VPN连不上学校服务器
  • 大模型开发中LCEL与LLMChain响应度的对比
  • Electron PC桌面应用exe开发
  • C#中switch语句使用
  • 大模型日报 2024-12-01
  • 大模型开发和微调工具Llama-Factory-->数据处理