找出出现次数最多的单词并输出,并输出出现的次数

这篇博客介绍了一种使用哈希表解决找出英文单词中出现次数最多的方法。通过离散化字符串,存储在哈希节点的单链表中,实现查找和插入操作。在插入过程中更新最大单词次数,并记录答案。最后通过示例代码展示了如何实现这一过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

/**************************************************************************************************************
给你一堆英文单词,找出出现次数最多的,输出这个单词,并输出出现的次数。
思路:
hash离散数据,进行查询即可。(转化为数字时)
1.首先将每个字符串转化为一个数字。
2.把离散后的结果存入hashnode[]数组中。(初始化头结点全部为空,且头结点不存内容,
只是判断离散后是否有这个结果)
3.插入+查询操作
若该结果出现过,则与结点内容想比较,相同则该结点单词数目加1。否则查找以此数字为离散结果的下一个结点
(离散结果相同)。
没出现过:开辟新结点,插入到以此数字为离散结果的单链表中,单词数目设为1,字符串复制至结点中。
4.在插入过程中不断比较,找出最大的单词数目,并记录。(maxcount,answer[11])。
代码如下:
***************************************************************************************************************/
#include<iostream>
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
using namespace std;
#define MAX 20000
#define MOST_FREQUENCY 25
int maxcount = 0;
char answer[MOST_FREQUENCY];
struct Node
{
    int num; //结点数目
    char str[MOST_FREQUENCY]; //结点数组
    Node *next; //下一个结点
};
Node hashnode[MAX];
void init() //初始化数组
{
    for(int i = 0; i < MAX; ++i)
    hashnode
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值