# coding:utf-8#JSRUN引擎2.0,支持多达30种语言在线运行,全仿真在线交互输入输出。 #现有两个整数数组,需要你找出两个数组中同时出现的整数,并按照如下要求输出:#1.有同时出现的整教时,先按照同时出现次数(整数在两人数组中都出现并目出现次数较少的那人)进行归类,然后按照出现次数从小到大依次按行输出。#2.没有同时出现的整数时,输出NULL#输入描述#第一行为第一个整数数组,第二行为第二个整数数组,每行数中整数与整数之间以英文号分,整数的取值范用为200,2001,数组长度的范用为[1,10000]之间的整数。#输出描述#按照出现次数从小到大依次按行输出,每行输出的格式为:#出现次数:该出现次数下的整数升序排序的结果#格式中的"."为英文冒号,整数间以英文逗号分隔.#示例1:#输入#5,3,6,-8,0,11#2,8,8,8,-1,15#输出#NULL#说明#两个整数数组没有同时出现的整数,输出NULL。#示例2:#输入:#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#输出#1:-1,2,3,6#3:8,11#说明#两整数数组中同时出现的整数为-12、3、6、8、11,其中同时出现次数为1的整数为-1,2,3.6(升序排序),同时出现次数为3的整数为8,11(升序排序),先升序输出出现次数为1的整数,再升序输出出现次数为3的整数。nums1 = [int(x) for x in input().split(",")]nums2 = [int(x) for x in input().split(",")]num1_map = {}
i=0while(True):
if(i>=len(nums1)):
breakelse:
if nums1[i] in num1_map:
num1_map[nums1[i]] += 1else:
num1_map[nums1[i]] = 1i+=1num2_map = {}
j=0while(True):
if(j>=len(nums2)):
breakelse:
if nums2[j] in num2_map:
num2_map[nums2[j]] += 1else:
num2_map[nums2[j]] = 1j+=1flag = True
output_str = "NULL"same_num_map = {}
for num in num1_map:
if num in num2_map:
flag = False
if min(num1_map[num], num2_map[num]) not in same_num_map:
same_num_map[min(num1_map[num], num2_map[num])] = []same_num_map[min(num1_map[num], num2_map[num])].append(num)
if not flag:
arr = []output_str = ""for key in same_num_map:
arr.append(key)
arr = sorted(arr, key=lambda x: x, reverse=False)
for index in arr:
new_res = sorted(same_num_map[index],key=lambda x: x, reverse=False)
tmp_str = ""for ss in new_res:
tmp_str += str(ss) + ","output_str = str(index) + ":" + tmp_str[:-1]
print(output_str)