leetcode387. 字符串中的第一个唯一字符,哈希表

news2024/9/20 22:34:55

leetcode387. 字符串中的第一个唯一字符

给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。

示例 1:
输入: s = “leetcode”
输出: 0

示例 2:
输入: s = “loveleetcode”
输出: 2

示例 3:
输入: s = “aabb”
输出: -1

提示:
1 <= s.length <= 105
s 只包含小写字母

在这里插入图片描述

目录

  • leetcode387. 字符串中的第一个唯一字符
  • 题目分析
    • 题目描述
    • 算法分析
  • 算法步骤
  • 算法流程
  • 算法代码
  • 算法分析
    • 复杂度分析
    • 易错点
    • 注意事项
  • 相似题目
  • 相似题目

题目分析

题目描述

给定一个字符串 s,返回它的第一个不重复字符的索引。如果不存在,则返回 -1。

算法分析

这个问题可以通过使用哈希表来解决。我们首先遍历字符串,使用哈希表记录每个字符出现的次数。然后,我们再次遍历字符串,查找第一个出现次数为 1 的字符,并返回其索引。

算法步骤

  1. 初始化一个空哈希表 q
  2. 遍历字符串 s,对于每个字符,将其添加到 q 并增加其计数。
  3. 再次遍历字符串 s,查找第一个在 q 中计数为 1 的字符,并返回其索引。
  4. 如果所有字符都至少出现两次,返回 -1。

算法流程

开始
初始化无序映射 q
遍历字符串 s
添加字符计数到 q
再次遍历字符串 s
检查 q 中字符计数
返回索引
返回 -1
结束

算法代码

class Solution {
public:
    int firstUniqChar(string s) {
    unordered_map<char,int> q;
    for(int i=0;i<s.size();i++)
    q[s[i]]++;
    for(int i=0;i<s.size();i++)
    {
        if(q[s[i]]==1) return i;
    }
    return -1;
}
};

算法分析

复杂度分析

  • 时间复杂度:O(n),其中 n 是字符串的长度。我们只需要遍历字符串两次。
  • 空间复杂度:O(min(m, n)),其中 m 是字符集的大小。哈希表的大小取决于字符集的大小和字符串中不同字符的数量。

易错点

  • 在初始化哈希表时,确保正确地记录每个字符的出现次数。
  • 在查找第一个不重复字符时,确保正确地返回其索引。

注意事项

  • 确保字符串只包含字符集内的字符。
  • 确保哈希表的键是字符串中的字符,值是对应的出现次数。

相似题目

相似题目

题目链接
找出字符串中唯一字符的索引https://leetcode.com/problems/find-first-unique-character-in-a-string/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2044493.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

可能是全网最好用的 5 款免费数据恢复软件

不小心将 USB 中的文件删除了&#xff0c;这个时候要怎么办&#xff1f;首先我们不要保存 USB 磁盘上的任何新数据&#xff0c;否则丢失的数据文件将被覆盖。然后再利用专业的数据恢复工具进行恢复&#xff0c;这里为大家整理了全网最被推荐的5款免费的数据恢复软件。 1.福昕数…

vmware虚拟机玩GPU显卡直通

安装好exsi以后&#xff0c;找到管理----硬件-----PCI设备&#xff0c;勾选想要直通的显卡&#xff0c;然后点击“切换直通” 切换以后可以看到列表中的直通列显示为活动就对了。 然后编辑虚拟机设置&#xff0c;CPU关闭硬件虚拟化&#xff08;向客户机操作系统公开硬件辅助的…

【python】在Windows中定时执行Python脚本的详细用法教学

✨✨ 欢迎大家来到景天科技苑✨✨ &#x1f388;&#x1f388; 养成好习惯&#xff0c;先赞后看哦~&#x1f388;&#x1f388; &#x1f3c6; 作者简介&#xff1a;景天科技苑 &#x1f3c6;《头衔》&#xff1a;大厂架构师&#xff0c;华为云开发者社区专家博主&#xff0c;…

高可用集群keepalived(知识点+实验)详细版

高可用集群KEEPALIVED 一.高可用集群 1.1 集群类型 LB&#xff1a;Load Balance 负载均衡 LVS/HAProxy/nginx&#xff08;http/upstream, stream/upstream&#xff09; HA&#xff1a;High Availability 高可用集群 数据库、Redis SPoF: Single Point of Failure&…

在win10中,安装mingw-get-setup

安装windows下的VSCode软件 Windows下的VSCode安装后&#xff0c;还需要安装gcc编译器和g编译器。 gcc&#xff1a;编译C语言程序的编译器&#xff1b; g&#xff1a;编译C代码的编译器&#xff1b; 1、在Windows下安装VSCode&#xff1b; 2、安装插件有下面几个&#xff1a…

iPhone SE 4可能无法使用Apple Intelligence RAM可能被降级

在设备上运行Apple Intelligence的先决条件是RAM容量和神经引擎的能力。这些要求解释了为什么苹果的生成AI功能套件将首先在iPhone 15 Pro和iPhone 15 Pro Max上可用&#xff0c;因为这两款手机都配备了8GB RAM和A17 Pro。 此前有消息称&#xff0c;iPhone SE 4也将配备相同容…

Stable Diffusion入门:新手必备的几种插件,让小白快速上手(附带地址)

Stable Diffusion是一款强大的AI绘画工具&#xff0c;对于初学者而言&#xff0c;掌握这些模型和插件的使用&#xff0c;是解锁创作潜力、迅速提升技能水平的关键所在&#xff01; 首先我们简单介绍一下插件是什么&#xff1f;如何安装插件&#xff1f; 插件&#xff08;Plug…

VUE最强学习宝典01

目录 1.Vue是什么&#xff1f; 2. 两种使用方法 3.创建第一个vue实例 4.补充小知识 5.错误查询 1.Vue是什么&#xff1f; 概念&#xff1a;动态构建用户界面的渐进式 JavaScript 框架 。 优点&#xff1a;大大提升开发效率(70%) 缺点&#xff1a;需要理解记忆规划-->官…

开学季必备:全能耐用运动耳机推荐!

大家好&#xff01;开学季快到了&#xff0c;我们在学校的生活不仅仅包括课业&#xff0c;还有很多运动和体育项目是不可避免的。运动时&#xff0c;如果没有音乐的陪伴&#xff0c;难免会觉得枯燥乏味。作为一个对运动耳机有较高要求的学生&#xff0c;我最近发现了一款非常值…

VLM 系列——MiniCPM-Llama3-V 2.6——论文解读——前瞻(源码解读)

一、概述 1、是什么 是一款面向终端设备的多模态大型语言模型&#xff08;MLLM&#xff09;&#xff0c;论文暂未发布 &#xff0c;它专注于实现在手机等资源受限设备上的高级AI功能&#xff0c;参数8B&#xff08;qwen2 7B SigLIP ViT-400m/14 视觉标记压缩层 &#xff09;…

HOW - 用腾讯蓝盾部署一个 Web 应用

目录 一、介绍二、项目、流水线和 Stage1. 项目&#xff08;Project&#xff09;2. 流水线&#xff08;Pipeline&#xff09;3. Stage&#xff08;阶段&#xff09;示例&#xff1a;配置一个简单的 CI/CD 流程的基本步骤总结 三、一条完整的流水线包括什么 Stage1. 源代码管理&…

29岁的服务员到网络安全工程师,大龄转行成功逆袭

大龄转行&#xff0c;一直在网络上备受争议。 转换职业赛道&#xff0c;从学习能力和试错成本角度来看&#xff0c;确实越早行动越有利&#xff0c;而大龄转行无疑伴随着较高的风险。 然而&#xff0c;大龄转行并非无路可走&#xff1a;古有苏老泉&#xff0c;年近三十方才开始…

数据结构之---堆(2)

一、出堆 出堆是指将堆顶数据出堆。出堆完成后要保证剩余数据还是满足原来堆的性质。所以我们把堆顶数据和堆底最后一个数据交换&#xff0c;取出新堆底数据&#xff0c;之后通过向下调整算法将剩下的数据重新排列成一个堆。 大堆经过出堆操作得出的数据是升序的 小堆经过出堆…

聚观早报 | 一加13配置细节曝光;谷歌首推人工智能手机

聚观早报每日整理最值得关注的行业重点事件&#xff0c;帮助大家及时了解最新行业动态&#xff0c;每日读报&#xff0c;就读聚观365资讯简报。 整理丨Cutie 8月15日消息 一加13配置细节曝光 谷歌首推人工智能手机 MONA M03汽车即将上市 iPhone SE 4将升级8GB运行内存 R…

redis事件机制

redis服务器是一个由事件驱动(死循环)的程序&#xff0c;它总共就干两件事&#xff1a; 文件事件&#xff1a;利用I/O复用机制&#xff0c;监听Socket等文件描述符发生的事件&#xff0c;如网络请求时间事件&#xff1a;定时触发的事件&#xff0c;负责完成redis内部定时任务&…

MCU复位RAM会保持吗,如何实现复位时变量数据保持

在使用MCU时&#xff0c;通常大家默认MCU复位时RAM会被复位清零&#xff0c;那实际MCU复位时RAM是什么状态&#xff1f;如何让mcu复位时RAM保持不变呢&#xff1f; MCU复位有电源复位、Standby复位、内核复位、看门狗复位、引脚复位等。 其中内部会有掉电动作的复位有电源复位…

Linux知识复习第5期

目录 1、实验环境 2、日志存放 3、自定义日志采集路径 1、实验环境 hostnamectl hostname node1.zx.org # 设置主机名 vim /etc/hosts # 域名解析修改 hostname -I # 显示ip地址 2、日志存放 /var/log/messages 系统服务日志&#xff0c;常规…

快速MD5强碰撞生成器:fastcoll

问&#xff1a;可以制作两个具有相同哈希值的不同文件吗&#xff1f; 答&#xff1a;可以。 在密码学中&#xff0c;哈希函数将输入数据转换成固定长度的字符串。但由于输入的无限性和输出的固定性&#xff0c;不可避免地会有不同输入产生相同的哈希值&#xff0c;这就是碰撞。…

【ITK】图像分割算法:FastGrowCut详解

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ:870202403 公众号:VTK忠粉 前言 本文分享图像分割算法FastGrowCut的详细解析过程,希望对各位小伙伴有所帮助! 感谢各位小伙伴的点赞+关注,小易会继续努力分享,一起进步! 你的点赞就是我的动力(^U^)ノ~YO 目录…

单元训练09:定时器实现秒闪功能

蓝桥杯 小蜜蜂 单元训练09&#xff1a;定时器实现秒闪功能 #include "stc15f2k60s2.h"#define LED(x) \{ \P0 x; \P2 P2 & 0x1f | 0x80; \P2 & 0x1f; \}#define L1 0xFE; // 定义L1 …