[Java]求两组整数的异或集和交集2

【问题描述】

从标准输入中输入两组整数(每行不超过20个整数,每组整数中元素不重复),求两组整数的异或集(合并两组整数,去掉在两组整数中都出现的整数后形成的集合)和交集(在两组整数中都出现的整数形成的集合),并按从小到大顺序排序输出。

【输入形式】

首先输入第一组整数,以一个空格分隔各个整数;然后在新的一行上输入第二组整数,以一个空格分隔。两行最后一个整数后没有空格,只有回车换行。

【输出形式】

先按从小到大顺序排序输出两组整数的异或集(以一个空格分隔各个整数,最后一个整数后也有一个空格),然后在下一行按照从小到大的顺序排序输出两组整数的交集(以一个空格分隔各个整数,最后一个整数后也有一个空格)。若两组整数的异或集或交集为空,则相应的输出行上只输出一回车换行。

【样例输入】

5 1 4 32 8 7 9 -6

5 2 87 10 1 6

【样例输出】

-6 2 4 6 7 8 9 10 32 87

1 5

【样例说明】

第一组整数为5,1,4,32,8,7,9和-6,第二组整数分别为5,2,87,10,1和6。将第一组和第二组整数合并,并去掉在两组整数中都出现的整数5和1即可得到两组整数的异或集,并从小到大顺序排序后结果为-6 2 4 6 7 8 9 10 32 87 ;两组整数中都出现的整数5和1形成了交集,按从小到大的顺序输出为:1 5 。

【评分标准】该题要求按照从小到大的顺序输出两组整数的异或集和交集。

Java代码参考示例一:(使用Set集合和ArrayList集合)

java 复制代码
import java.util.ArrayList;
import java.util.Scanner;
import java.util.Set;
import java.util.TreeSet;
public class Main {
	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		String num1=sc.nextLine();
		String num2=sc.nextLine();
		String[] n1 = num1.split(" ");
		String[] n2 = num2.split(" ");
		Set<Integer> re1 = new TreeSet<Integer>();
		Set<Integer> re2 = new TreeSet<Integer>();
		ArrayList<String> r1 = new ArrayList<String>();
	    for(int i=0;i<n1.length;i++)  r1.add(n1[i]);
	    for(int i=0;i<n2.length;i++)  r1.add(n2[i]);
	    for(String s:r1) {
	    	if(r1.lastIndexOf(s)==r1.indexOf(s)) {
	    		re1.add(Integer.parseInt(s));
	    	}else {
	    		re2.add(Integer.parseInt(s));
	    	}
	    }
	    for(int result:re1) {
	    	System.out.print(result+" ");
	    }
	    System.out.println();
	    for(int result:re2) {
	    	System.out.print(result+" ");
	    } 
	    sc.close();
	}
}

参考示例代码二:

java 复制代码
import java.util.Scanner;
public class Main {

	public static void quicksort(int q[], int l, int r)
    {
        if (l >= r) return;

        int i = l - 1, j = r + 1, x = q[l + r >> 1];
        while (i < j)
        {
            do i ++ ; while (q[i] < x);
            do j -- ; while (q[j] > x);
            if (i < j) {
                int t = q[i];
                q[i]=q[j];
                q[j]=t;
            }
        }
        quicksort(q, l, j);
        quicksort(q, j + 1, r);
    }
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String str1 = sc.nextLine();
        String[] s1 = str1.split(" ");
        String str2 = sc.nextLine();
        String[] s2 = str2.split(" ");
        String[] r1 = new String[100010];
        String[] r2 = new String[100010];
        int k=0,v = 0;
        for (int i = 0; i < s1.length; i++) {
            int j = 0;
            for (; j < s2.length ; j++) {
                if(s1[i].equals(s2[j])){
                    break;
                }
              }
            if(j==s2.length)  r1[k++]=s1[i];
            else r2[v++]=s1[i];
            }
        for (int i = 0; i < s2.length; i++) {
            int j = 0;
            for (; j < s1.length ; j++) {
                if(s2[i].equals(s1[j])){
                    break;
                }
            }
            if(j==s1.length)  r1[k++]=s2[i];
        }
        int[] num1 = new int[100010];
        int[] num2 = new int[100010];
        for (int i = 0; i < k; i++) {
            num1[i] = Integer.parseInt(r1[i]);
         }
         quicksort(num1,0,k-1);
        for(int i=0;i<k;i++) System.out.print(num1[i]+" ");
        System.out.println();
        for (int i = 0; i < v; i++) {
            num2[i] = Integer.parseInt(r2[i]);
        }
        quicksort(num2,0,v-1);
        for(int i=0;i<v;i++) System.out.print(num2[i]+" ");
     }
}
相关推荐
.格子衫.1 天前
Spring Boot 原理篇
java·spring boot·后端
多云几多1 天前
Yudao单体项目 springboot Admin安全验证开启
java·spring boot·spring·springbootadmin
Swift社区1 天前
LeetCode 394. 字符串解码(Decode String)
算法·leetcode·职场和发展
tt5555555555551 天前
LeetCode进阶算法题解详解
算法·leetcode·职场和发展
让我们一起加油好吗1 天前
【基础算法】DFS中的剪枝与优化
算法·深度优先·剪枝
Jabes.yang1 天前
Java求职面试实战:从Spring Boot到微服务架构的技术探讨
java·数据库·spring boot·微服务·面试·消息队列·互联网大厂
聪明的笨猪猪1 天前
Java Redis “高可用 — 主从复制”面试清单(含超通俗生活案例与深度理解)
java·经验分享·笔记·面试
Q741_1471 天前
C++ 模拟题 力扣495. 提莫攻击 题解 每日一题
c++·算法·leetcode·模拟
兮动人1 天前
Spring Bean耗时分析工具
java·后端·spring·bean耗时分析工具
MESSIR221 天前
Spring IOC(控制反转)中常用注解
java·spring