【问题】在一个字符串(0<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置, 如果没有则返回 -1(需要区分大小写).
【思路】使用一个hash_map用来储存每个字符的个数,只需要遍历一次,然后再遍历一次整个字符串的每个字母,从hash_map中获取对应字母的字数,如果为1,直接return。
class Solution { public: int FirstNotRepeatingChar(string str) { if(str.length() == 0) return -1; unordered_map<char, int> hash_map; for(int i = 0;i < str.length(); i++){ hash_map[str[i]]++; } for(int i = 0;i < str.length(); i++){ if(hash_map[str[i]] == 1){ return i; } } return -1; } };