目录
前几天遇到一个面试问题,一个字符串,“aaabbbbccc”,对其进行统计,记录3个a,4个b,3个c,最终打印3a,3c,4b。
其实后来面试官提示了用python,后来想了想,用python很简单,但是因为python的第三方库太太太丰富了,记起来不容易,java相对时间久,运用也熟悉,就选择了java。
一、常规方法
这个题,去重,统计都简单,直接用map即可。
难的是排序,如何将字符和个数对应起来,而且用个数排序呢?
可以知道,“对应起来”放到一个对象中即可,“个数排序”自定义一个比较器即可。
然后放到list中,对list调用比较器,代码如下:
public static void main(String[] args) {
String ss = "aaabbbbccc";
char[] chars = ss.toCharArray();
Map map = new HashMap();
List<Node> list = new ArrayList();
for (char c:chars){
if (map.get(c) == null){
map.put(c,1);
}else{
map.put(c,(