有效地使用具有数组的KMP来计数单词频率计数
Effectively using KMP with array to count word frequency count
我想从文章中计数单词频率。
我的想法首先创建一个结构数组
struct{
char[WORD_SIZE]
}data[MAX_WORD_NUMBER];
然后读取每个字符,然后通过
确定isalpha();
然后通过
转换为小写tolower();
然后将一个单词存储到每个结构。
然后使每个单词的失败功能
然后通过调用它来测试每个单词。
1.但是我不知道如何计算重复引起的频率。
(我以为我可以在阅读和插入一个单词时每次都可以进行比较,但是它是如此无效,是否有更有效的方法?)
2.我认为我的方法调用功能太多了。
如何更有效地使用KMP?
您正在用C或C 编程?您用两个标记了问题。
假设您正在使用C ,那么您将在std::map
方面做得更好,以计算您的单词。像这样的东西
#include <map>
#include <string>
std::map<std::string, int> data;
std::string word;
data[word] = 0; // set word count to zero
data[word]++; // increment word count
// print out all the word counts
for (std::map<std::string, int>::iterator i = data.begin();
i != data.end(); ++i)
{
cout << "word " << i->first << " occurs " << i->second << "timesn";
}
如果您为作业选择正确的工具,那么此任务将是 SO 。当然,如果您在C中编程,那么这些都不会有帮助。
如果您打算在C中执行此操作,请像这样扩展结构:
struct {
char[WORD_SIZE];
int count;
} data[MAX_WORD_NUMBER];
然后,每当您在此结构数组中存储一个新单词时,也将相应的count
设置为0。
然后,如果您发现一个单词已经在数组中,请增加相应的count
。
在程序结束时打印计数。
相关文章:
- 文本文件中的单词链表
- 计算数组c++的平均值
- 芬威克树(BIT).找到具有给定累积频率的最小索引,单位为 O(logN)
- 在指针的帮助下,文本文件中单词的频率
- 如何根据单词在文本中出现的概率输出单词
- 从字符串变量中逐字符读取单词
- 使用std::mt19937从字符串中返回一个随机单词
- 函数计算用户按下按钮的频率
- 如何用for循环在c++中生成单词三角形
- 将数字转换为单词
- 使用if-else将数字转换为单词
- C++-字符串是否包含一个带有简单循环的单词
- 使用单词"not"作为C ++类的名称会导致VS2019错误
- 在条件变量中触发错误信号的频率是多少
- 创建一个函数,返回给定单词在C++中的频率
- 有效地使用具有数组的KMP来计数单词频率计数
- 使用地图计算单词频率
- 算法:计算单词列表频率的更好方法
- 从vector和unordered_map中获取三个出现次数最多的单词及其计数值
- 统计一个单词在文本中出现的频率