数字出现的次数
一、使用的数据结构
哈希表是一种高效的数据结构,它可以快速地插入和查找元素。哈希表是由一组链表组成的,每个链表称为“桶”。通常使用一个数组来模拟哈希表,数组中的每一个元素都是一个指向链表头部的指针。
哈希函数是哈希表的核心,它将任意长度的输入(键)映射为固定长度的输出(桶),并将指定的键存储在相应的桶中。哈希函数应该具有以下特性:
- 相同的输入一定要产生相同的输出。
- 不同的输入应该尽量产生不同的输出。
二、实现思路
本算法的实现思路非常简单,就是遍历整个字符串,通过哈希表来记录每个数字出现的次数。
具体而言,先定义一个哈希表 res
,用于统计每个数字出现的次数。然后遍历字符串中的每个字符,如果当前字符为数字,就将对应的哈希表值加1。最后再遍历数字0~9,并输出它们在字符串中出现的次数。
// 定义哈希表,用于统计数字出现次数
int res[256] = { 0 };
for (int i = 0; i < sizeof(str) - 1; i++) {
// 如果当前字符为数字,则将对应的哈希表值加1
if (str[i] >= '0' && str[i] <= '9') {
res[str[i]]++;
}
}
// 输出结果
for (int i = '0'; i <= '9'; i++) {
printf("%c出现的次数:%d\n", i, res[i]);
}
三、算法分析
该算法基于哈希表实现,时间复杂度为O(n),空间复杂度为O(1)。由于只需要遍历一次字符串,因此效率很高。
四、总结
在实际编程中,哈希表是一种非常实用的数据结构,它具有快速插入和查找元素的特性。本算法通过哈希表来统计数字出现次数,代码实现简单,易于理解和维护。
常见的快乐算法 文章被收录于专栏
一些简单的算法题目,不想浪费这些快乐