gpt4 book ai didi

c++ - 有效地使用带数组的 KMP 来计算词频计数

转载 作者:太空宇宙 更新时间:2023-11-04 06:37:30 26 4
gpt4 key购买 nike

我想统计一篇文章的词频。

我的想法是先创建一个struct数组

 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 << "times\n";
}

如果您为工作选择合适的工具,这项任务将如此容易得多。当然,如果您使用 C 语言编程,那么这些都无济于事。

关于c++ - 有效地使用带数组的 KMP 来计算词频计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12987682/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com