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