iT邦幫忙

2024 iThome 鐵人賽

0
佛心分享-刷題不只是刷題

刷經典 LeetCode 題目系列 第 70

經典LeetCode 387. First Unique Character in a String

  • 分享至 

  • xImage
  •  

題目:

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

解題思路

使用 hasp map (unordered_map) 來計數,

class Solution {
public:
    int firstUniqChar(string s) {
        unordered_map<char, int> map;

        for (int i = 0; i < s.size(); i++) {
            map[s[i]]++;
        }

        for (int i = 0; i < s.size(); i++) {
            if (map[s[i]] == 1)
                return i;
        }
        return -1;
    }
};

時間複雜度:O(n)
空間複雜度:O(1)

另一種方式使用陣列來計數,且只適用於小寫字母,

class Solution {
public:
    int firstUniqChar(string s) {
        vector<int> count(26, 0);

        for (int i = 0; i < s.size(); i++) {
            count[s[i] - 'a']++;
        }

        for (int i = 0; i < s.size(); i++) {
            if (count[s[i] - 'a'] == 1)
                return i;
        }
        return -1;
    }
};

時間複雜度:O(n)
空間複雜度:O(1),使用固定大小的陣列

參考:
#387. First Unique Character in a String


上一篇
經典LeetCode 344. Reverse String
系列文
刷經典 LeetCode 題目70
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言