【问题标题】:Counting characters in words in a C++ console application在 C++ 控制台应用程序中计算单词中的字符
【发布时间】:2013-07-31 14:10:29
【问题描述】:

这是我试图解决的问题:

要求用户输入一堆单词,他们想输入多少就输入多少,直到他们输入一个 0。之后 计算每个字母在所有单词中出现的次数,并打印出每个字母的列表以及它出现的次数。示例:

Enter word> hello
Enter word> lemon
Enter word> goodbye
Enter word> 0
Letter: h appears 1 times
letter: e appears 3 times
...

到目前为止,我必须将所有单词放在一起,并进行比较。问题在于,将所有单词放在一起,输入0后,我无法计算组合字符串中的每个单独字符。我做了一些研究,我读到要执行此操作需要向量,但我不明白如何使用它们。

我已经尝试了一周以使其正确,但无济于事。 C++ 与我学过的所有其他语言都有些不同(至少对我而言)。

【问题讨论】:

  • 一些想法:为 256 个可能的字符(我假设 ASCII)维护一个大小为 256 的数组/向量,每次当你读一个新单词时,你迭代那个单词,增加计数器对应的字符。
  • 他应该考虑使用关联数组。在这里,有序映射或无序映射会比向量/数组更好。

标签: c++ histogram


【解决方案1】:

您可以使用std::unordered_map,其中字符作为键,计数器作为值。对于您读取的每个字符串,只需对其进行迭代并增加与映射中的字符对应的值。

这样你实际上不需要存储单词。

【讨论】:

  • 填充地图只有一件事。感觉OP会一一填满。只需遍历 ascii 表字符(您需要的字符)并以这种方式填充它 :)
  • 他可能更喜欢这里的有序地图,以便轻松操作结果,例如按频率排序。
  • @PaulRenton 声誉不错。 :)
  • @JoachimPileborg 是的,我的一部分希望我能留在 666!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-02-27
  • 1970-01-01
  • 1970-01-01
  • 2012-09-23
  • 1970-01-01
  • 2020-08-08
  • 2017-05-01
相关资源
最近更新 更多