387. 字符串中的第一个唯一字符
题目描述
给定一个字符串 s
,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1
。
示例 1:
输入: s = "leetcode" 输出: 0
示例 2:
输入: s = "loveleetcode" 输出: 2
示例 3:
输入: s = "aabb" 输出: -1
提示:
1 <= s.length <= 105
s
只包含小写字母
解法
方法一:数组或哈希表
我们可以用数组或哈希表 \(cnt\) 记录字符串 \(s\) 中每个字符出现的次数。
然后我们再遍历字符串 \(s\),当遍历到某个字符 \(c\) 时,如果 \(cnt[c]=1\),则说明 \(c\) 是第一个不重复的字符,返回它的索引即可。
如果遍历完字符串 \(s\) 仍然没有找到不重复的字符,返回 \(-1\)。
时间复杂度 \(O(n)\),空间复杂度 \(O(\Sigma)\),其中 \(\Sigma\) 是字符集的大小。
1 2 3 4 5 6 7 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
|