图解LeetCode——剑指 Offer 50. 第一个只出现一次的字符

程序员 2024-9-20 17:26:21 103 0 来自 中国
一、标题

在字符串 s 中找出第一个只出现一次的字符。如果没有,返回一个单空格。 s 只包罗小写字母。
二、示例

2.1> 示例 1:

【输入】s = "abaccdeff"
【输出】'b'
2.2> 示例 2:

【输入】s = ""
【输出】' '
限定:


  • 0 <= s 的长度 <= 50000
三、解题思绪

根据标题形貌,我们须要做到两点:
第1点】找出字符串 s 中,每个字符的出现次数
第2点】去重生存字符在 s 中的出现序次
那么针对上面的两点,我们创建两个变量:
int[] times】用于记录字符串 s 中每个字符的出现次数;
char[] order】用于记录字符串 s 中字符的出现序次;
详细的逻辑就是,起首遍历字符串s中的全部字符,然后生存在times中,此中key存储的是字符,value存储的是该字符出现的次数;当发现某个字符第一次出现的时间,就将其生存到order数组中;
然后我们再遍历order数组,并根据times中记录的每个字符的出现次数,只要发现有字符出现次数是1次,那么就作为方法效果返回即可。
下面以s = "abaccdeff"为例,详细相识一下详细的处置惩罚过程。请见下图所示:
四、代码实现
您需要登录后才可以回帖 登录 | 立即注册

Powered by CangBaoKu v1.0 小黑屋藏宝库It社区( 冀ICP备14008649号 )

GMT+8, 2024-10-18 22:35, Processed in 0.155572 second(s), 32 queries.© 2003-2025 cbk Team.

快速回复 返回顶部 返回列表