第一个只出现一次的字符
1.题目描述
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
案例:
2.思路
构建一个大小为256的数组作为哈希表来保存字符出现的次数,第一次遍历字符串记录每个字符出现的次数,第二次遍历字符串,遇到第一个只出现一次的字符,则返回他的索引。
3.代码
class Solution {
public:
int firstUniqChar(string s) {
if(s.empty()){
return -1;
}
vector<int> hash_map(256,0);
for(auto &i : s){
hash_map[i]++;
}
for(int i = 0;i < s.size();++i){
if(hash_map[s[i]] == 1){
return i;
}
}
return -1;
}
};
4.复杂度分析
时间复杂度:O(n)
空间复杂度:O(1)