第一次只出现一个的字符

【问题】在一个字符串(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;
    }
};

猜你喜欢

转载自www.cnblogs.com/zhudingtop/p/11368751.html