按出现次数从少到多的顺序输出数组中的字符串

问题

有一个数组为{"Liu Yi", "Chen Er", "Zhang San", "Chen Er", "Chen Er", "Li Si", "Li Si", "Wang Wu"},

要求:

(1)把数组中没重复的字符串按原先的先后顺序打印出来

(2)把数组中有重复的字符串,按出现次数从少到多的顺序打印出来,每个字符串只打印一次

思路

C++中,vector按先后顺序存储数据,因此可把没重复的字符串按顺序存到vector中。

map默认是按key从小到大的顺序存放数据,所以可把有重复的数据存到map中,并且以出现次数为key,以字符串为value

代码

运行结果:

效率:

这个算法的时间复杂度是n ^ n + 2 * n, 你有更好的方法吗?

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180322G0Q5F500?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券