持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第11天,点击查看活动详情
【LetMeFly】387.字符串中的第一个唯一字符
力扣题目链接:leetcode.cn/problems/fi…
给定一个字符串 s ,找到 它的第一个不重复的字符,并返回它的索引 。如果不存在,则返回 -1 。
示例 1:
输入: s = "leetcode" 输出: 0
示例 2:
输入: s = "loveleetcode" 输出: 2
示例 3:
输入: s = "aabb" 输出: -1
提示:
1 <= s.length <= 105s只包含小写字母
方法一:计数
首先遍历一遍字符串,然后把每个字母的出现次数计算出来。
之后再遍历一遍字符串。遍历过程中,如果遇到了一个值出现过一次的字母,就返回这个字母的下标。
否则(第二次遍历完也没有发现只出现了一次的字母)就返回-1。
- 时间复杂度,其中是字符串长度
- 空间复杂度,其中是字符集大小。本题中字符集为26个小写英文字母,
AC代码
C++
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:letmefly.blog.csdn.net/article/det…