Hash表的使用
Hash表能够实现在O(1)时间内对数据访问,虽然空间复杂度很高,但是时间复杂度很好。所以下面说一些使用Hash的算法。
第一个只出现一次的字符
利用Hash可以实现统计字符的个数,然后在遍历一次得到最早的那个只出现一次的字符。
注意:如果传入的字符串为NULL或者字符串里没有只出现一次的字符,这两种情况都要返回-1。
int FirstNotRepeatingChar(string str) { int hash_table[256] = {0}; if(str.empty()) { return -1; } int len = str.size(); int i = 0; for(i = 0; i < len; i++) { hash_table[str[i]]++; } for(i = 0; i < len; i++) { if(hash_table[str[i]] == 1) return i; } if(i == len) return -1; }