随笔 - 384  文章 - 0  评论 - 0  阅读 - 13万

力扣387(java)-字符串中的第一个唯一字符(简单)

题目:

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

 示例 1:

输入: s = "leetcode"
输出: 0
示例 2:

输入: s = "loveleetcode"
输出: 2
示例 3:

输入: s = "aabb"
输出: -1
 

提示:

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

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/first-unique-character-in-a-string
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

解题思路:

一、两次遍历

1.先统计出每个字母出现的次数,s1[i] - 'a': s[i]减去a对应的ASCII码。s[i]为字符数组因为题中提示给出所有字母均为小写字母,小写字母的范围为97-122,数组的范围为0-26,小写字母范围相对于数组范围大了97个位置,所以需要减掉97来找到原来的位置。例如:字母b,减去97为1,即b原来的位置为count[2]。

2.再次遍历字符数组,如果某字母出现的次数count[i] =1,直接返回i即可,否则,返回 -1。

代码:

 

 二、哈希表

解题思路与第一种一样,先统计出每个字母出现的次数,再次遍历如果统计数的次数为1,返回当前字符的索引即可。

代码:

 小知识:

1.map的初始化:统计出字符出现的次数,故键值类型为字符型,实指类型为整型。

 Map<Character, Integer> map = new HashMap<Character, Integer>();

2.map.getOrDefault()方法:

Map.getOrDefault(key,默认值);

Map中会存储一一对应的key和value;
如果 在Map中存在key,则返回key所对应的的value;
如果 在Map中不存在key,则返回默认值。

 

posted on   我不想一直当菜鸟  阅读(273)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示