题目描述
在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写)
解答:
用hash表map<char,int>,把每个char放在数组中,int用来统计出现次数
一开始做的时候插入数据用的是insert,insert有不好的地方,用insert函数插入数据,在数据的插入上涉及到集合的唯一性这个概念,即当map中有这个关键字时,insert操作是不能再插入这个数据的,但是用数组方式就不同了,它可以覆盖以前该关键字对应的值,即:如果当前存在该关键字,则覆盖改关键字的值,否则,以改关键字新建一个key—value;
class Solution {
public:
int FirstNotRepeatingChar(string str) {
if (str.empty())return -1;
map<char, int>bp;
for (int i = 0;i < str.size();i++)bp[str[i]]++;
for (int i = 0;i < str.size();i++) {
if (bp[str[i]] == 1)
{
return i;
}
}
return -1;
}
};