【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; // 没有只出现一次的字符
    }
}
相关推荐
无限码力11 分钟前
阿里算法岗 0530笔试真题 - 寻找满足条件的最优子序列
算法·阿里笔试真题·阿里机试真题·阿里算法岗笔试真题·阿里算法题
@小阿宝17 分钟前
机器人正向逆向运动学
算法·机器人
小雨下雨的雨19 分钟前
数独算法与求解器鸿蒙PC Electron框架完成深度解析
javascript·人工智能·算法·游戏·华为·electron·鸿蒙系统
HZ·湘怡22 分钟前
数据结构之排序算法 (1)--插入排序
c语言·数据结构·算法·排序算法
ouliten22 分钟前
[Triton笔记7]融合注意力 (Fused Attention)
人工智能·笔记·算法
开源Z23 分钟前
LeetCode 238 · 除自身以外数组的乘积:左右两遍扫描,不用除法
算法·leetcode
BAGAE34 分钟前
FEC-RS前向纠错编码理论及工程实施研究
c语言·c++·qt·算法·决策树·链表
酉鬼女又兒38 分钟前
零基础入门计算机网络:集线器与交换机区别、以太网交换机自学习转发流程及生成树协议STP全解析
服务器·网络·网络协议·tcp/ip·计算机网络·考研·职场和发展
兰令水38 分钟前
leecodecode【状态机DP】【2026.6.9打卡-java版本】
java·开发语言·算法
8Qi81 小时前
LeetCode 5:最长回文子串(Longest Palindromic Substring)—— 题解
算法·leetcode·职场和发展·动态规划