Hash 算法
给定一个字符串找出第一个出现一次的字符
如给定"abaccdeff",应该输出b。
思路:
字符char是一个长度为8的数据类型,所以总共有256种可能,每个字母根据他的ASCII码值作为数组的下标对应数组的一个数字,数组中存储每个字符出现的次数
比如给定字母 a,对应 ASCii 的值为97,那么数组索引下标为97
char ->f(key)->index
存储和查找都通过该函数。
char findFirstChar(char *chr){
char result = '\0';
// 定义一个数组用来存储每个字符出现的次数
int array[256];
// 初始化数组
for (int i = 0 ; i < 256; i++) {
array[0] = 0;
}
char *p = chr;
// 遍历每个字符
while (*p != '\0') {
// 将字母的值对应的存储位置,+1,数组的值代表这个值出现的次数
array[*(p ++)] ++;
}
// 将 p 指向头部
p = chr;
while (*p != '\0') {
// 找到出现一次
if (array[*p] == 1) {
result = *p;
break;
}
// 继续查找
p ++;
}
return result;
}






网友评论