Leetcode每日刷题之字符串中的第一个唯一字符(C++)

在学习的过程中对代码的熟练运用至关重要,练习解决实际问题就可以很好的锻炼自己的编程能力,接下来让我们练习这道 387.字符串中的第一个唯一字符

思路解析

根据题意我们可以知道这个字符串只有小写字母,并且可能包含多个唯一字符,也可能没有唯一字符,所以我们要解决问题的核心要点就是

1. 找出所有唯一字符

2. 找出第一次出现的唯一字符

3. 如果没有唯一字符就返回 -1

接下来使用代码来进行详细解释

cpp 复制代码
class Solution {
public:
    int firstUniqChar(string s) 
    {
        int count[26] = {0};
        //范围 for 通过映射计数
        for(auto ch : s)
        {
            count[ch - 'a']++;
        }

        for(size_t i = 0;i < s.size();i++)
        {
            if(count[s[i] - 'a'] == 1)
                return i;
        }

        return -1;
    }
};

代码分析

1. 首先我们可以使用遍历的思想去依次枚举只出现了一次的唯一字符,然后再判断第一次出 现的字符

2. 这时我们可以使用计数排序的思想,就是开辟一个数字用来存储26个字母对应的出现次 数,即使用映射的思想来计数,使用 当前字母 - 'a' 当做下标,然后遍历用来计数的数组

3. 如果出现了唯一字符就返回其索引,也就是它的下标,反之返回 - 1

相关推荐
小江的记录本6 分钟前
【JVM虚拟机】垃圾回收GC:垃圾判定算法:引用计数法、可达性分析算法(附《思维导图》+《面试高频考点清单》)
java·jvm·后端·python·算法·spring·面试
Hello.Reader13 分钟前
算法基础(十四)—— 随机化快速排序为什么平均表现很好
算法
吴可可12315 分钟前
Teigha中OdGe几何库详解及C#使用
算法
爱喝水的鱼丶26 分钟前
SAP-ABAP:变量、常量、结构与内表声明(10篇博客合集) 第六篇:ABAP 7.40+新特性:声明语法的简化写法与兼容注意事项
运维·服务器·开发语言·学习·算法·sap·abap
国科安芯1 小时前
AS32S601商业航天级抗辐照MCU芯片:架构设计与技术特性研究
单片机·嵌入式硬件·算法·安全·架构·risc-v
菜菜的顾清寒1 小时前
力扣HOT100(34)图论-岛屿数量
算法·leetcode·图论
圣保罗的大教堂1 小时前
leetcode 2657. 找到两个数组的前缀公共数组 中等
leetcode
名字不好奇1 小时前
大模型的思考模式:它真的在“想“吗?
人工智能·算法
Run_Teenage1 小时前
算法模板:输入输出,并查集
java·开发语言·算法
高一学习c++会秃头吗2 小时前
操作系统内存块分配算法
算法