【LeetCode】Easy | 387. 字符串中的第一个唯一字符

https://leetcode.cn/problems/first-unique-character-in-a-string/

java 复制代码
/**
 * 找到字符串中第一个只出现一次的字符的下标;若不存在返回 -1。
 *
 * 思路:
 * 1) 用长度为 26 的计数数组统计每个小写字母出现次数;
 * 2) 再从左到右扫描字符串,遇到出现次数为 1 的字符就返回其下标。
 *
 * 时间复杂度:O(n)(两次遍历字符串)
 * 空间复杂度:O(1)(固定 26 大小数组)
 *
 * 说明:仅适用于全为小写字母 'a'~'z' 的字符串。
 */
class Solution {
    public int firstUniqChar(String s) {
        int[] a = new int[26]; // 统计每个小写字母出现次数(a[0] 对应 'a',a[25] 对应 'z')

        // 第一次遍历:计数
        for (int i = 0; i < s.length(); i++) {
            char tmp = s.charAt(i);
            a[tmp - 'a']++;
        }

        // 第二次遍历:找到第一个出现次数为 1 的字符
        for (int i = 0; i < s.length(); i++) {
            if (a[s.charAt(i) - 'a'] == 1) {
                return i; // 返回下标
            }
        }

        return -1; // 没有只出现一次的字符
    }
}
相关推荐
CarIise1 小时前
C语言结构体与链表
数据结构·算法
测试19981 小时前
UI自动化测试:窗口截图&文件上传实战
自动化测试·软件测试·python·selenium·测试工具·职场和发展·测试用例
Tisfy1 小时前
LeetCode 3720.大于目标字符串的最小字典序排列:状态机 —— :从左往右枚举,失败则退回(最多退回一次)
linux·数据库·leetcode·字符串·状态机·构造
晚风醉蝶1 小时前
1-18-基数排序-RadixSort
python·算法·排序算法·基数排序
lch2011_yb1 小时前
CSP-J 2022 上升点列 题解
算法·深度优先
lvts_cs2 小时前
化工产业规划对城市发展的具体指导作用
算法·动态规划
AI服务老曹2 小时前
水位识别算法接入AI视频分析平台全流程与误报优化指南(附接口字段与排查表)
人工智能·算法·音视频
江畔柳前堤2 小时前
消息队列:从直觉到精通的完整认知地图
开发语言·人工智能·算法·机器学习·ruby on rails·scala
ai产品老杨3 小时前
明火识别算法接入AI视频分析平台全流程与误报优化指南(附接口字段与排查表)
人工智能·算法·音视频
讨厌吃蛋黄酥3 小时前
📚408数据结构|最短路径算法一篇彻底搞懂!BFS、Dijkstra、Floyd别再傻傻分不清了
算法