第一个只出现一次的字符

来源:互联网 发布:海拔高度查询软件 编辑:程序博客网 时间:2024/05/20 06:40

题目描述

在一个字符串(1<=字符串长度<=10000,全部由字母组成)中找到第一个只出现一次的字符,并返回它的位置

/*map查找的时间复杂度为log(n),底层实现为红黑树,查找频率不高的时候用map*/class Solution {public:    int FirstNotRepeatingChar(string str) {        int len=str.size();        if(len<1||len>10000) return -1;         map<char,int> map1;        for(int i=0; i<len; ++i)            map1[str[i]]++;        for(int i=0; i<len; ++i)            if(map1[str[i]]==1)                return i;        return -1;    }};


二:先在hash表中统计各字母出现次数,第二次扫描直接访问hash表获得次数

   int FirstNotRepeatingChar(string str) {        if ( str.length() == 0)            return -1;                 unsigned int hashTime[256] = {0};        for(int i =0;i<str.length();++i)            hashTime[str[i]]++;                 for(int i =0;i<str.length();++i)        {            if(hashTime[str[i]] == 1)                return i;        }        return -1;    }