【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; // 没有只出现一次的字符
    }
}
相关推荐
洛水水几秒前
【力扣100题】36.二叉树展开为链表
算法·leetcode·链表
lwf0061641 分钟前
PNN (Product-based Neural Network) 学习日记
算法·机器学习
ZPC82104 分钟前
YOLO-3D + 双目相机 (RGB + 深度 + 点云) → 3D 位置 + 抓取姿态
人工智能·算法·计算机视觉·机器人
ZPC82105 分钟前
YOLOv8-3D(3D 目标检测 + 6D 抓取姿态)
算法·机器人
bubiyoushang88819 分钟前
基于 TGLVM 算法的迁移学习分类系统
算法·分类·迁移学习
Rabitebla28 分钟前
深入理解 C++ STL:stack 和 queue 的底层原理与实现
c语言·开发语言·数据结构·c++·算法
通信仿真爱好者37 分钟前
【无标题】
人工智能·算法·机器学习
落羽的落羽1 小时前
【算法札记】练习 | Week3
linux·服务器·数据结构·c++·人工智能·算法·动态规划
艾iYYY1 小时前
类和对象(详解初始化列表, static成员变量, 友元,内部类)
c语言·数据结构·c++·算法
AbandonForce1 小时前
C++11:列表初始化||右值和移动语义||引用折叠和完美转发||可变参数模板||lambda表达式||包装器(function bind)
开发语言·数据结构·c++·算法