数据结构|剑指offer——查找一个字符串中第一次出现一次的字符(哈希直接定址法)
哈希表——直接定址法的应用
哈希表(Hash table,也叫散列表),是根据关键码值而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。
直接定址法——取关键字的某个线性函数为散列地址,Hash(key)=key或者Hash(key)=A*key+B,A和B是两个常数。
剑指offer面试题:查找一个字符串中第一次出现一次的字符
文章图片
"test.cpp"
【数据结构|剑指offer——查找一个字符串中第一次出现一次的字符(哈希直接定址法)】
#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 13. 机器人的运动范围(dfs,bfs)
- 《数据结构与算法之美》——队列
- 笔记|C语言数据结构——二叉树的顺序存储和二叉树的遍历
- Java深入了解数据结构之栈与队列的详解
- Java集合框架|Java集合框架 数据结构
- 数据结构与算法|【算法】力扣第 266场周赛
- 数据结构和算法|LeetCode 的正确使用方式
- 剑指offer60.n个骰子的点数
- 剑指offer——最小的K个数
- 一个好的算法应该如何评测(数据结构学习1)