Skip to content

Latest commit

 

History

History
73 lines (61 loc) · 1.77 KB

File metadata and controls

73 lines (61 loc) · 1.77 KB

题目描述: 字符串中的第一个唯一字符

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

案例:

s = "leetcode"
返回 0.

s = "loveleetcode",
返回 2.

注意事项: 您可以假定该字符串只包含小写字母。

解题思路:

此题与剑指Offer<五十题>题目一一样,利用哈希表来求即可。

时间复杂度:

O(n)

空间复杂度

O(n)

代码

哈希表

class Solution {
public:
    int firstUniqChar(string s) {
        int res = -1;
        int n = s.size();
        if (n==0) return res;
        unordered_map<char,int> m;
        for (int i=0;i<n;i++)
        {
            m[s[i]]++;
        }
        for (int i=0;i<n;i++) 
        {
            if (m[s[i]]==1)
            {
                return i;
            }
        }
        return res;
    }
};

哈希表

class Solution:
    def firstUniqChar(self, s: str) -> int:
        n = len(s)
        res = -1
        if n==0:
            return res
        count = collections.Counter(s)
        for index,ch in enumerate(s):
            if count[ch]==1:
                return index
        return res

参考