题解 | #数据分类处理#,差点没懵

数据分类处理

http://www.nowcoder.com/practice/9a763ed59c7243bd8ab706b2da52b7fd

import java.util.*;


public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        while (scanner.hasNext()) {
            int n = scanner.nextInt();
            String[] i = new String[n];
            for (int j = 0; j < n; j++) {
                i[j] = scanner.next();
            }
            int m = scanner.nextInt();
            TreeSet<Integer> r = new TreeSet<>();

            for (int j = 0; j < m; j++) {
                int nextInt = scanner.nextInt();
                r.add(nextInt);
            }
            Iterator<Integer> iterator = r.iterator();

            LinkedHashMap<TreeMap, List> linkedHashMap = new LinkedHashMap<>();
            int count = 0;
            while (iterator.hasNext()) {
                TreeMap<Integer, Integer> okAndNumber = new TreeMap<>();
                ArrayList<TreeMap> list = new ArrayList<>();
                Integer next = iterator.next();
                String strR = String.valueOf(next);
                for (int j = 0; j < i.length; j++) {
                    if (i[j].contains(strR)) {
                        TreeMap<Integer, Integer> indexAndValue = new TreeMap<>();
                        int key = Integer.parseInt(strR);
                        Integer value = okAndNumber.get(key);
                        // 数字和数量
                        if (value != null) {
                            okAndNumber.put(key, ++value);
                        } else {
                            count += 2;
                            okAndNumber.put(key, 1);
                        }
                        // I的索引和值
                        indexAndValue.put(j, Integer.parseInt(i[j]));
                        list.add(indexAndValue);
                        count += 2;
                    }
                }
               if(okAndNumber.size() != 0){
                   linkedHashMap.put(okAndNumber, list);
               }
            }
            String s = count + " ";
            for (Map.Entry<TreeMap, List> entry : linkedHashMap.entrySet()) {
                TreeMap keyTree = entry.getKey();
                for (Object o : keyTree.keySet()) {
                    int key1 = (int) o;
                    int value1 = (int) keyTree.get(key1);
                    s +=  key1 + " " + value1 + " ";
                    List list = entry.getValue();
                    for (int j = 0; j < list.size(); j++) {
                        TreeMap treeMap = (TreeMap) list.get(j);
                        for (Object o1 : treeMap.keySet()) {
                            int key2 = (int) o1;
                            int value2 = (int) treeMap.get(key2);
                            s += key2 + " " + value2 + " ";
                        }
                    }
                }
            }
            System.out.println(s);
        }
    }
}

全部评论

相关推荐

05-29 09:02
门头沟学院 Java
点赞 评论 收藏
分享
06-11 14:15
已编辑
门头沟学院 后端
田心今心:打招呼改一下,把实习半年以上随时到岗放第一行,因为ssob的hr不点击看的时候只能看前面几个字,你前面几个字hr获取不到什么信息,也就不会点进来看
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务