leetcode 387.字符串中第一个唯一字符

⭐️ 题目描述


🌟 leetcode链接:https://leetcode.cn/problems/first-unique-character-in-a-string/description/

思路: 比较优的方式使用相对映射记录的方式。在 ASCII 表中小写字母 -97 就是 0 - 25。在依次从前遍历查找即可。需要注意的是 :这里使用 char 数组不行 因为 char 数组每个元素最多只能存储到127 次,那如果超出 127 次就会溢出 所以用 int 精度比较高。

代码:

cpp 复制代码
class Solution {
public:
    int firstUniqChar(string s) {
        // 哈希
        int hash[26] = {0};
        /*
            这里使用 char 数组不行 因为char数组每个元素最多只能存储到127次
            那如果超出127次就会溢出 所以用 int 精度比较高
        */
        for (int i = 0; i < s.size(); i++) {
            hash[s[i] - 97]++;
        }

        // 查找
        for (int i = 0; i < s.size(); i++) {
            if (hash[s[i] - 97] == 1) {
                return i;
            }
        }

        return -1;
    }
};

相关推荐
沈阳信息学奥赛培训3 分钟前
#define 和 typedef 的区别
开发语言·c++
程序猿编码5 分钟前
轻量又灵活:一款伪造TCP数据包的iptables扩展实现解析(C/C++代码实现)
linux·c语言·网络·c++·tcp/ip·内核·内核模块
j_xxx404_5 分钟前
LeetCode模拟算法精解I:替换问号,提莫攻击与Z字形变换
开发语言·数据结构·c++·算法·leetcode
勇闯逆流河12 分钟前
【Linux】linux进程概念(fork,进程状态,僵尸进程,孤儿进程)
linux·运维·服务器·开发语言·c++
70asunflower13 分钟前
CUDA基础知识巩固检验练习题【附有参考答案】(7)
c++·人工智能·cuda
superkcl202217 分钟前
C++初始化 和 赋值
开发语言·c++·算法
yuyuzururu20 分钟前
进程同步与互斥实验报告
c++
weixin_4219226930 分钟前
C++中的状态模式高级应用
开发语言·c++·算法
楼田莉子30 分钟前
Linux网络:应用层HTTP网络协议
网络·c++·后端·网络协议·学习·http
二年级程序员31 分钟前
认识与了解 C++
开发语言·c++