問題描述 :
交集:由幾個集合的共同元素所形成的集合,稱為這幾個集合的交集,由 A 、 B 兩集合的共同元素所形成的交集以 A ∩ B 表之。
範例 :
A 、 B 分別為兩個集合,集合裏有不同的元素,如下列所示,求出其交集之集合內容 :
A = 1,2,3,5,8,13
B = 1,2,4,6,8,10
交集: 1 2 8
求輸入任 2 個集分別為合 A 集合及 B 集合,求其交集 ?
輸入說明 :
輸入兩列的數字代表 A 及 B 兩集合,第一列為 A 集合,第一列為 B 集合,每一列集合中的元素以逗號分隔開來。
例如:
輸入 2 列字串 ( 第一列為 A 集合,第一列為 B 集合 ) :
1,3,5,7,9,11
2,3,4,5,6,8,10
輸出說明 :
輸出 A 及 B 兩集合之交集 , 輸出元素以空白分隔開來, 須按照小到大排列 . 若空集合則輸出 null
例如:
按照小到大排列 輸出為:
3, 5
範例 :
題目來源:http://e-tutor.itsa.org.tw/e-Tutor/mod/programming/view.php?id=15560
import java.util.Scanner;
public class C_ST82 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String[] A=scanner.nextLine().split(",");
String[] B=scanner.nextLine().split(",");
String[] C=new String[A.length];
int num=0;//計數
for(int i=0;i<A.length;i++){
//System.out.println(A[i]);
for(int j=0;j<B.length;j++){
//System.out.println(B[j]);
if(A[i].equals(B[j])){
C[num]=A[i];
num++;
}
}
}
//System.out.println(num);
for(int i=0;i<num;i++){
for(int j=i+1;j<num;j++){
//System.out.println("i"+C[i]+" j"+C[j]);
if(Integer.parseInt(C[i])>Integer.parseInt(C[j])){
String ss=C[i];
C[i]=C[j];
C[j]=ss;
}
}
}
for(int i=0;i<num;i++){
if(i!=0){
System.out.print(" ");
}
System.out.print(C[i]);
}
if(num==0){
System.out.print("null");
}
System.out.println();
scanner.close();
}
}