剑指offer 51. 字符串中第一个只出现一次的字符

简介: 剑指offer 51. 字符串中第一个只出现一次的字符

题目描述

在字符串中找出第一个只出现一次的字符。

如输入"abaccdeff",则输出b

如果字符串中不存在只出现一次的字符,返回 # 字符。


数据范围

输入字符串长度 [0,1000]。

样例:

输入:"abaccdeff"
输出:'b'



方法一:哈希表 O(n)

利用哈希表快速查找性质,可以找到对应元素。步骤如下:


  1. 先遍历一遍所有字符,用哈希表存下每个字符出现了多少次。
  2. 然后再遍历一遍所有字符,去查询该字符在哈希表中出现的次数。如果能找到 hash[i] == 1 即只出现了一次的字符,就输出该字符。
  3. 如果没有找到只出现一次的字符,就返回 #
class Solution {
public:
    char firstNotRepeatingChar(string s) {
        map<char, int>  hash;
        for (auto i : s)   hash[i]++;
        for (auto i : s)
            if (hash[i] == 1)
                return i;
        return '#';
    }
};


欢迎大家在评论区交流~

目录
相关文章
|
机器学习/深度学习 存储 编解码
高效神经网络架构的正确打开方式! | EMO:结合 CNN 和 Transformer
高效神经网络架构的正确打开方式! | EMO:结合 CNN 和 Transformer
1605 0
|
数据采集 小程序 Python
搞定短视频!批量下载快手视频(附源码)
相信大家都接触了短视频平台,比如某音、某手等平台,竟然大家都熟悉了,那么今天辰哥分享的技术是:在某手上搜索视频,并实现下载!
1690 0
|
8月前
|
数据采集 分布式计算 数据可视化
大数据项目成功的秘诀——不只是技术,更是方法论!
大数据项目成功的秘诀——不只是技术,更是方法论!
216 8
大数据项目成功的秘诀——不只是技术,更是方法论!
|
JavaScript 前端开发
__proto__和prototype的区别
`prototype`和`__proto__`虽然都与JavaScript的原型继承和对象关系密切相关,但它们的定义、所属对象、作用和功能等方面存在着明显的区别。理解它们之间的区别对于深入掌握JavaScript的面向对象编程和原型链机制非常重要
|
机器学习/深度学习 数据采集 人工智能
使用Python实现简单的机器学习分类器
【8月更文挑战第37天】本文将引导读者了解如何利用Python编程语言构建一个简单的机器学习分类器。我们将从基础概念出发,通过代码示例逐步深入,探索数据预处理、模型选择、训练和评估过程。文章旨在为初学者提供一条清晰的学习路径,帮助他们理解并实现基本的机器学习任务。
|
边缘计算 人工智能 物联网
传统架构与RISC-V架构有什么区别?
计算机架构的发展经历了多个阶段,从最早的CISC(复杂指令集计算机)到后来的RISC(精简指令集计算机)。RISC-V作为一种新兴的RISC架构,以其开放性和模块化设计受到广泛关注。
405 2
|
9月前
|
数据库
【YashanDB知识库】数据库获取时间和服务器时间不一致
【YashanDB知识库】数据库获取时间和服务器时间不一致
|
JavaScript 前端开发 UED
HTML 超链接的多种类型及应用
【10月更文挑战第17天】HTML 超链接类型丰富多样,它们共同构成了网页中不可或缺的导航和交互元素。通过合理地选择和运用这些超链接类型,我们可以为用户创造更加流畅和便捷的浏览体验,提升网站的可用性和吸引力。
642 1
|
Java 关系型数据库 MySQL
springboot基于java的超市进销存管理系统 毕业设计-附源码
springboot基于java的超市进销存管理系统 毕业设计-附源码
|
Java
手写SpringBoot(四)之bean动态加载
可以看到只有userApplication tomcatWebServer init打印,没有mySpringboot tomcatWebServer init打印,证明spring-boot只加载了用户定义的那个tomcatWebServer
195 0