題目:
這題要求在給定的字串中找到第一個不重複的字元,並回傳它的索引。如果不存在不重複字元,則回傳 -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