【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; // 没有只出现一次的字符
    }
}
相关推荐
白羊by2 小时前
YOLOv1~v11 全版本核心演进总览
深度学习·算法·yolo
墨尘笔尖3 小时前
最大最小值降采样算法的优化
c++·算法
skylijf5 小时前
2026 高项第 6 章 预测考点 + 练习题(共 12 题,做完稳拿分)
笔记·程序人生·其他·职场和发展·软件工程·团队开发·产品经理
white-persist5 小时前
【vulhub shiro 漏洞复现】vulhub shiro CVE-2016-4437 Shiro反序列化漏洞复现详细分析解释
运维·服务器·网络·python·算法·安全·web安全
FL16238631296 小时前
基于C#winform部署软前景分割DAViD算法的onnx模型实现前景分割
开发语言·算法·c#
baizhigangqw6 小时前
启发式算法WebApp实验室:从搜索策略到群体智能的能力进阶
算法·启发式算法·web app
C雨后彩虹7 小时前
最多等和不相交连续子序列
java·数据结构·算法·华为·面试
一江寒逸7 小时前
零基础从入门到精通 AI Agent 开发(全栈保姆级教程)附加篇:AI Agent 面试八股文全集
人工智能·面试·职场和发展
久菜盒子工作室7 小时前
面试经验|产品经理|自我介绍
面试·职场和发展·产品经理
cpp_25018 小时前
P2347 [NOIP 1996 提高组] 砝码称重
数据结构·c++·算法·题解·洛谷·noip·背包dp