题解 | #字符统计

字符统计

http://www.nowcoder.com/practice/c1f9561de1e240099bdb904765da9ad0

使用了HashMap来记录字母出现的次数。

/**
 * @Author: Administrator
 * @Date: 2021/9/26 17:53
 * @Description:
 */

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Scanner;

public class Main {

    public static void main(String[] arg) {
        Scanner scan = new Scanner(System.in);
        StringBuilder builder = new StringBuilder();
        while (scan.hasNext()) {
            String input = scan.nextLine();
            char[] charArr = input.toCharArray();
            Map<String, Integer> map = new HashMap<>();
            for (char charecter : charArr) {
                String charStr = String.valueOf(charecter);
                if (map.containsKey(charStr)) {
                    map.put(charStr, map.get(charStr) + 1);
                } else {
                    map.put(charStr, 1);
                }
            }

            //这里将map.entrySet()转换成list
            List<Map.Entry<String, Integer>> list = new ArrayList<>(map.entrySet());
            //然后通过比较器来实现排序
            Collections.sort(list, new Comparator<Map.Entry<String, Integer>>() {
                //升序排序
                public int compare(Map.Entry<String, Integer> o1,
                                   Map.Entry<String, Integer> o2) {
                   return o1.getValue().compareTo(o2.getValue())==0?
                           (int)o2.getKey().charAt(0)- (int)o1.getKey().charAt(0):
                            o1.getValue().compareTo(o2.getValue());
                }

            }.reversed());

            for (Map.Entry<String, Integer> mapping : list) {
                builder.append(mapping.getKey());
            }
            builder.append("\n");
        }

        System.out.println(builder);
    }

}
全部评论
这里的Integer可以使用 Short ,String可以使用Character
点赞 回复 分享
发布于 2021-12-08 09:53
可以使用这个进行map插入map.put(ch,map.getOrDefault(ch,0)+1); 将String换成Character可以节约空间,感谢,一起加油
点赞 回复 分享
发布于 2022-03-25 11:31

相关推荐

评论
5
1
分享

创作者周榜

更多
牛客网
牛客企业服务