Merge Sets But Excluded Values
Submit solution
Points:
10 (partial)
Time limit:
1.0s
Memory limit:
256M
Authors:
Problem type
Allowed languages
Java 19, Java 8
題目說明
請撰寫一個程式,先讀取五組字串,每個字串包含一到多個水果,水果之間以逗號分隔,水果可能重複。
程式應該將每一組存入HashSet集合中,使得每一組都僅保留不重複的水果。再將這些集合存入一個ArrayList陣列中。
程式另外讀取第六個字串,該字串字串包含一到多個可能重複的水果,稱為所謂的不良水果。程式將合併每個水果集,形成一個單一個水果集合,合併過程必須忽略指定的不良水果。
最後,輸出合併且篩選過的水果集,輸出時會依照水果名稱排序(已實作在參考程式碼中的ShowSortedSet函數)。
如果最後水果集是空的,就僅輸出Empty字樣。
可以利用以下的參考程式碼作為基礎,做小幅度的修改(可能在20行以內),讓它可以滿足以上需求。若修改正確,當程式獲得以下每一組範例輸入時,應該產生該範例的對應輸出結果。
範例輸入#1
apple,banana
apple,apple
apple,peach
banana,peach,watermelon
banana,banana,peach,peach
apple,banana
範例輸出#1
peach,watermelon
範例輸入#2
mango,apple,blueberry
strawberry,orange,kiwi,grape
lemon,watermelon,apple
banana,pineapple,banana
peach,apple,blueberry,grape,orange
blueberry,pineapple,grape
範例輸出#2
apple,banana,kiwi,lemon,mango,orange,peach,strawberry,watermelon
範例輸入#3
apple,banana
apple,apple
apple,peach
banana,peach,watermelon
banana,banana,peach,peach
apple,banana,peach,watermelon,strawberry
範例輸出#3
Empty
參考程式碼
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Scanner;
public class MyProgram {
public static void main(String[] args) {
ArrayList<HashSet<String>> list = new ArrayList<>();
// Read input data, split by comma, and store in HashSet
Scanner scanner = new Scanner(System.in);
for (int i = 0; i < 5; i++) {
HashSet<String> set = new HashSet<>();
for (String value : scanner.nextLine().split(",")) {
set.add(value);
}
list.add(set);
}
// Read the values to remove
HashSet<String> valuesToExclude = new HashSet<>();
// Merge all sets but the one with the value to remove
HashSet<String> mergedSet = mergeSetsButExcludedValues(list, valuesToExclude);
// Show the merged set
if (mergedSet.isEmpty()) {
System.out.println("Empty");
} else {
ShowSortedSet(mergedSet);
}
}
public static void ShowSortedSet(HashSet<String> set) {
ArrayList<String> sortedList = new ArrayList<>(set);
sortedList.sort(null);
System.out.println(String.join(",", sortedList));
}
}
Comments