剑指offer——查找一个字符串中第一次出现一次的字符(哈希直接定址法)

哈希表——直接定址法的应用

哈希表(Hash table,也叫散列表),是根据关键码而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

直接定址法——取关键字的某个线性函数为散列地址,Hash(key)=key或者Hash(key)=A*key+B,A和B是两个常数。

剑指offer面试题:查找一个字符串中第一次出现一次的字符

剑指offer——查找一个字符串中第一次出现一次的字符(哈希直接定址法)_第1张图片

"test.cpp"

#define _CRT_SECURE_NO_WARNINGS 1
#include 
using namespace std;
#include 

char FindFirstOneChar(char* str)
{
	assert(str);
	int tables[256] = {0};//Ascii表中有256个字符
	char* tmp = str;

	while (*tmp != '\0')
	{
		//不加unsigned char也可以
		tables[(unsigned char)*tmp]++;
		tmp++;

		//也可以一步到位
		//tables[(unsigned char)*tmp++]++;
	}
	tmp = str;
	while (*tmp != '\0')
	{
		//不加unsigned char也可以
		if (tables[(unsigned char)*tmp] == 1)
		{
			return *tmp;
		} 
		else
		{
			tmp++;
		}
	}
}

//查找一个字符串中第一个只出现一次的字符
void Test()
{
	char* str = "hhddadeechrhg";
	char ret = FindFirstOneChar(str);
	cout<


你可能感兴趣的:(数据结构,面试题,剑指offer面试题,笔试面试题)