力扣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,则返回默认值。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· AI与.NET技术实操系列(五):向量存储与相似性搜索在 .NET 中的实现
· 超详细:普通电脑也行Windows部署deepseek R1训练数据并当服务器共享给他人
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)