387.字符串中的第一个唯一字符

【LetMeFly】387.字符串中的第一个唯一字符

力扣题目链接:https://leetcode.cn/problems/first-unique-character-in-a-string/

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

 

示例 1:

输入: s = "leetcode"
输出: 0

示例 2:

输入: s = "loveleetcode"
输出: 2

示例 3:

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

 

提示:

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

方法一:计数

首先遍历一遍字符串,然后把每个字母的出现次数计算出来。

之后再遍历一遍字符串。遍历过程中,如果遇到了一个值出现过一次的字母,就返回这个字母的下标。

否则(第二次遍历完也没有发现只出现了一次的字母)就返回-1

  • 时间复杂度$O(n)$,其中$n$是字符串长度
  • 空间复杂度$O(C)$,其中$C$是字符集大小。本题中字符集为26个小写英文字母,$C=26$

AC代码

C++

1
2
3
4
5
6
7
8
9
10
11
12
13
class Solution {
public:
int firstUniqChar(string& s) {
int cnt[26] = {0};
for (char& c : s)
cnt[c - 'a']++;
for (int i = 0; i < s.size(); i++) {
if (cnt[s[i] - 'a'] == 1)
return i;
}
return -1;
}
};

同步发文于CSDN,原创不易,转载请附上原文链接哦~
Tisfy:https://letmefly.blog.csdn.net/article/details/127262237


387.字符串中的第一个唯一字符
https://blog.letmefly.xyz/2022/10/11/LeetCode 0387.字符串中的第一个唯一字符/
作者
Tisfy
发布于
2022年10月11日
许可协议