1. 程式人生 > 其它 >每日leetcode-陣列-387. 字串中的第一個唯一字元

每日leetcode-陣列-387. 字串中的第一個唯一字元

分類:字串-字元的統計

題目描述:

給定一個字串,找到它的第一個不重複的字元,並返回它的索引。如果不存在,則返回 -1。

解題思路:

使用雜湊表儲存頻數

我們可以對字串進行兩次遍歷。

在第一次遍歷時,我們使用雜湊對映統計出字串中每個字元出現的次數。在第二次遍歷時,我們只要遍歷到了一個只出現一次的字元,那麼就返回它的索引,否則在遍歷結束後返回 -1−1。

class Solution:
    def firstUniqChar(self, s: str) -> int:
        frequency = collections.Counter(s)
        for i, ch in
enumerate(s): if frequency[ch] == 1: return i return -1

時間複雜度:O(n)其中nn是字串ss的長度。我們需要進行兩次遍歷。

空間複雜度:O(∣Σ∣),其中 \SigmaΣ 是字符集,在本題中 ss 只包含小寫字母,因此 |\Sigma| \leq 26∣Σ∣≤26。我們需要 O(|\Sigma|)O(∣Σ∣) 的空間儲存雜湊對映。