题目:字符串中的第一个唯一字符
给定一个字符串,找到它的第一个不重复的字符,并返回它的索引。如果不存在,则返回 -1。
示例
s = "leetcode" 返回 0 s = "loveleetcode" 返回 2
提示
你可以假定该字符串只包含小写字母。
解法
解法1:
暴力解法,超出时间限制
int firstUniqChar(string s) {
int count = 0;
for (int i = 0;i < s.size();i++)
{
count = 0;
for (int j = 0;j < s.size();j++)
{
if ((s[i] == s[j]) && (i != j))
{
count++;
}
}
if(!count)
{
return i;
}
}
return -1;
}
解法2:
哈希表,用map将每个字符出现的次数存储下来,后遍历map。
int firstUniqChar(string s) {
unordered_map<char,int> hashmap;
for(auto i : s){
if(hashmap.count(i)) hashmap[i] += 1;
else hashmap[i] = 1;
}
for(int j = 0; s[j] != '\0'; ++ j) if(hashmap[s[j]] == 1) return j;
return -1;
}
官方题解链接