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;
}

浙公网安备 33010602011771号