现在的位置: 首页 > 综合 > 正文

第一个只出现一次的字符

2013年09月10日 ⁄ 综合 ⁄ 共 369字 ⁄ 字号 评论关闭

利用哈希表的思想来解,首先设置一个数组保存字符串中每个字符出现的次数,第一趟遍历字符串计算出每个字符出现的次数,第二次遍历找出第一个只出现一次的字符。算法的时间复杂度为O(n)。

char FirstAppearedChar(char *str)
{
	if(str == NULL) // 数据合法性检验
		return '\0';

	unsigned int hashTable[256] = {0};  // 保存字符串每个字符出现的次数

	char *ch = str;
	while(*ch != '\0')
		hashTable[*(ch++)]++;  // 计算字符串每个字符出现的次数

	ch = str;
	while(*ch != '\0')
	{
		if(hashTable[*ch] == 1) // 第一次出现且次数为1的字符
			return *ch;
		++ch;
	}
	return '\0';    // 未找到第一次只出现一次的字符
}

抱歉!评论已关闭.