问题
有一个数组为{"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, 你有更好的方法吗?
领取专属 10元无门槛券
私享最新 技术干货