华为OD【找出两个整数数组中同时出现的整数】



import java.util.Scanner;
import java.util.*;
import java.util.HashMap;
public class Demo {
    public static void main(String[] args) {
        /*
5,8,11,3,6,8,8,-1,11,2,11,11
11,2,11,8,6,8,8,-1,8,15,3,-9,11

5,3,6,-8,0,11
2,8,8,8,-1,15

1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6
1,2,2,3,3,3,4,4,4,4,5,5,5,5,5,6,6,6,6,6,6

1,1,1,1,1,1,1
2,2,2,2,2,2,2

1
1

1
2
         */
        Scanner scanner = new Scanner(System.in);
        String s1 = scanner.nextLine();
        String s2 = scanner.nextLine();
        if(s1.length() == 0 || s2.length() == 0){
            System.out.print("NULL");
            return;
        }
        String[] nums1 = s1.split(",");
        String[] nums2 = s2.split(",");
        HashMap<Integer,Integer> map1 = new HashMap<>();

        for (String s : nums1) {
            map1.put(Integer.parseInt(s), map1.getOrDefault(Integer.parseInt(s), 0) + 1);
        }
        HashMap<Integer,Integer> map2 = new HashMap<>();
        for (String s : nums2){
            map2.put(Integer.parseInt(s),map2.getOrDefault(Integer.parseInt(s),0) + 1);
        }
        TreeMap<Integer,ArrayList<Integer>> treeMap = new TreeMap<>();
        for(Integer key : map1.keySet()){
            if(map2.containsKey(key)){
                //共同出现的次数
                int times = Math.min(map2.get(key),map1.get(key));
                ArrayList<Integer> integers = treeMap.get(times);
                if(integers == null){
                    integers = new ArrayList<>();
                    integers.add(key);
                    treeMap.put(times,integers);
                }else{
                    integers.add(key);
                }
            }
        }
        if(treeMap.isEmpty()){
            System.out.print("NULL");
            return;
        }
        int num = 0;
        for(Map.Entry<Integer,ArrayList<Integer>> entry : treeMap.entrySet()){
            num++;
            StringBuilder sb = new StringBuilder();
            sb.append(entry.getKey()).append(":");
            entry.getValue().forEach(value->{
                sb.append(value).append(",");
            });
            System.out.print(sb.substring(0,sb.toString().length() - 1));
            if(num != treeMap.size()){
                System.out.println();
            }
        }
    }
}
posted @ 2025-04-23 09:46  破忒头头  阅读(9)  评论(0)    收藏  举报