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

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

一、题目

在字符串 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"为例,详细了解一下具体的处理过程。请见下图所示:

四、代码实现

classSolution {
publiccharfirstUniqChar(Strings) {
intindex=0;
int[] times=newint[26];
char[] order=newchar[26];
for (charc : s.toCharArray()) {
if (times[c-'a'] ==0) order[index++] =c;
times[c-'a']++;
        }
for (inti=0; i<order.length; i++)
if (order[i] !=0&&times[order[i] -'a'] ==1) returnorder[i];
return' ';
    }
}


今天的文章内容就这些了:

写作不易,笔者几个小时甚至数天完成的一篇文章,只愿换来您几秒钟的 点赞 & 分享

更多技术干货,欢迎大家关注公众号“爪哇缪斯” ~ \(^o^)/ ~ 「干货分享,每天更新」

相关文章
|
6天前
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
【LeetCode刷题】滑动窗口思想解决问题:长度最小的子数组、无重复字符的最长子串
|
9天前
|
存储 算法 数据可视化
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
深入解析力扣161题:相隔为 1 的编辑距离(逐字符比较与动态规划详解)
|
9天前
|
存储 算法 数据可视化
深入解析力扣157题:用Read4高效读取N个字符(多种解法与详细图解)
深入解析力扣157题:用Read4高效读取N个字符(多种解法与详细图解)
|
9天前
|
存储 算法 数据可视化
深入解析力扣159题:至多包含两个不同字符的最长子串(滑动窗口法详细图解)
深入解析力扣159题:至多包含两个不同字符的最长子串(滑动窗口法详细图解)
|
10天前
|
存储 算法 数据挖掘
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
LeetCode 第三题:无重复字符的最长子串 详解 【3/1000】
|
23天前
|
存储
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
【LeetCode】剑指 Offer 54. 二叉搜索树的第k大节点
22 1
|
1月前
|
算法 DataX
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
二叉树(中)+Leetcode每日一题——“数据结构与算法”“剑指Offer55-I. 二叉树的深度”“100.相同的树”“965.单值二叉树”
|
1月前
|
算法 定位技术
【leetcode】剑指 Offer II 105. 岛屿的最大面积-【深度优先DFS】
【leetcode】剑指 Offer II 105. 岛屿的最大面积-【深度优先DFS】
22 0
|
1月前
|
机器学习/深度学习 索引
【力扣】387. 字符串中的第一个唯一字符
【力扣】387. 字符串中的第一个唯一字符
|
1月前
|
算法
每日一题:LeetCode-LCR 016. 无重复字符的最长子串
每日一题:LeetCode-LCR 016. 无重复字符的最长子串