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

  

 

posted @ 2015-08-26 21:02  stemon  阅读(261)  评论(0编辑  收藏  举报