LeetCode 0387. 字符串中的第一个唯一字符

Posted Tisfy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LeetCode 0387. 字符串中的第一个唯一字符相关的知识,希望对你有一定的参考价值。

【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 ) O(n) O(n),其中 n n n是字符串长度
  • 空间复杂度 O ( C ) O(C) O(C),其中 C C C是字符集大小。本题中字符集为26个小写英文字母, C = 26 C=26 C=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:https://letmefly.blog.csdn.net/article/details/127262237

以上是关于LeetCode 0387. 字符串中的第一个唯一字符的主要内容,如果未能解决你的问题,请参考以下文章

前端与算法 leetcode 387. 字符串中的第一个唯一字符

LeetCode --- 字符串系列 --- 字符串中的第一个唯一字符

《LeetCode之每日一题》:281.字符串中的第一个唯一字符

《LeetCode之每日一题》:130.字符串中的第一个唯一字符

leetcode 字符串中的第一个唯一字符

leetcode python 387. 字符串中的第一个唯一字符 383. 赎金信