c – 词频统计

c – 词频统计,第1张

概述在面试前,我遇到了这样的问题: 给定一个由单个空格分隔的单词组成的字符串,按照它们出现在字符串中的次数按降序打印出单词. 例如,输入字符串“a b b”将生成以下输出: b : 2a : 1 首先,我要说输入字符串是由单字母单词还是多字母单词组成还不是很清楚.如果是前者,那可能很简单. 这是我的想法: int c[26] = {0};char *pIn = strIn;while (*pI 在面试前,我遇到了这样的问题:

给定一个由单个空格分隔的单词组成的字符串,按照它们出现在字符串中的次数按降序打印出单词.

例如,输入字符串“a b b”将生成以下输出:

b : 2a : 1

首先,我要说输入字符串是由单字母单词还是多字母单词组成还不是很清楚.如果是前者,那可能很简单.

这是我的想法:

int c[26] = {0};char *pIn = strIn;while (*pIn != 0 && *pIn != ' '){    ++c[*pIn];    ++pIn;}/* how to sort the array c[26] and remember the original index? */

我可以得到输入字符串中每个单字母单词的频率统计数据,我可以对它进行排序(使用QuickSort或其他).但是在对count数组进行排序之后,如何获得与计数相关联的单字母单词,以便我可以稍后将它们打印出来?

如果输入字符串由多个字母组成,我打算使用map< const char *,int>跟踪频率.但同样,如何对地图的键值对进行排序?

问题在于C或C,欢迎提出任何建议.

谢谢!

解决方法 我会使用std :: map< std :: string,int>存储单词及其计数.然后我会用这个来得到这些话:

while(std::cin >> word) {    // increment map's count for that word}

最后,你只需要弄清楚如何按频率顺序打印它们,我会把它作为练习留给你.

总结

以上是内存溢出为你收集整理的c – 词频统计全部内容,希望文章能够帮你解决c – 词频统计所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1225813.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-05
下一篇 2022-06-05

发表评论

登录后才能评论

评论列表(0条)

保存