小编mak*_*kki的帖子

首先按频率对字符串中的字符进行排序,然后按字母顺序排序

给定一个字符串,我试图计算字符串中每个字母的出现次数,然后将它们的频率从最高到最低排序.然后,对于具有相似出现次数的字母,我必须按字母顺序对它们进行排序.

以下是我迄今为止所做的事情:

  • 我创建了一个int大小为26 的数组,对应于26个字母的字母,各个值表示它在句子中出现的次数
  • 我把这个数组的内容推送到了一对的矢量v,intchar(int对于频率和char实际的字母)
  • 我使用了这对对矢量 std::sort(v.begin(), v.end());

在显示频率计数时,我只使用从最后一个索引开始的for循环来显示从最高到最低的结果.但是,对于那些具有相似频率的字母,我遇到了问题,因为我需要按字母顺序显示它们.我尝试使用嵌套的for循环,内循环以最低索引开始,并使用条件语句检查其频率是否与外循环相同.这似乎有效,但我的问题是我似乎无法弄清楚如何控制这些循环,以避免冗余输出.要了解我在说什么,请参阅此示例输出:

Enter a string: hello world

Pushing the array into a vector pair v:
d = 1
e = 1
h = 1
l = 3
o = 2
r = 1
w = 1


Sorted first according to frequency then alphabetically:
l = 3
o = 2
d = 1
e = 1
h = 1
r = 1 …
Run Code Online (Sandbox Code Playgroud)

c++ sorting vector character frequency

4
推荐指数
1
解决办法
1万
查看次数

标签 统计

c++ ×1

character ×1

frequency ×1

sorting ×1

vector ×1