一、方法
哈希表
二 、解题思路
利用哈希表统计每一个字符出现的次数,再通过循环返回第一个不重复的字符位置。
三、code
class Solution {
public:
int firstUniqChar(string s) {
int n=s.size();
unordered_map<char,int> count;//记录每个字符出现的次数
//for (char c : s) 这行代码将字符串 s 中的每个字符依次赋值给变量 c。然后,通过 count[c]++ 来增加字符 c 在 count 哈希表中的计数。
for (char c:s)
{
count[c]++;
}
//由于我们是按顺序遍历字符串的,因此第一个满足条件的字符一定是第一个不重复的字符。
for (int i=0;i<n;++i)
{
if (count[s[i]] == 1)
{
return i;
}
}
return -1;// 没有找到不重复字符
}
};
=========================================================================
学到的知识;
①unordered_map<char, int> count;
unordered_map<char, int> count
表示创建了一个键为 char
类型、值为 int
类型的哈希表 count
。在这个哈希表中,每个字符将作为键,对应的出现次数将作为值
②for (char c : s) { count[c]++; }
for (char c : s)
这行代码将字符串 s
中的每个字符依次赋值给变量 c
。然后,通过 count[c]++
来增加字符 c
在 count
哈希表中的计数。
具体来说,count[c]++
表示增加字符 c
在 count
哈希表中的计数。如果 c
还不存在于 count
哈希表中,那么 count[c]
会被默认初始化为 0,然后 count[c]++
会将计数增加 1。如果 c
已经存在于 count
哈希表中,那么 count[c]
会增加 1。