用java写出以下代码:输入格式: 输入首先给出飞走的燕子的信息:在第一行给出不超过 10 5 的正整数 N,随后 N 行,每行给出一只飞走的燕子的编号。题目保证编号不重复。 随后是飞回的燕子的信息,首先是一个不超过 10 5 的非负整数 M,随后 M 行,每行给出一只飞回的燕子的编号。题目保证编号不重复。 编号为长度不超过 8 的、由英文字母和数字组成的字符串。 输出格式: 首先输出没有回来的燕子的信息,格式为: Missing: X ID[1] ... ID[X] 其中 X 为没有回来的燕子的数量,ID[i](i = 1, ..., X)为按字典序递增输出的这些燕子的编号。 然后输出新增燕子的信息,格式同上,只是把 Missing 换成 New。 如果 X 为零,则对应情况下输出 All Back(都回来了)或 All Known(都认识)。
时间: 2024-04-08 11:28:31 浏览: 150
根据您的需求,我为您编写了以下的Java代码:
```java
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;
public class SwallowInfo {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
int N = sc.nextInt(); // 飞走的燕子数量
ArrayList<String> leftSwallows = new ArrayList<>();
for (int i = 0; i < N; i++) {
String id = sc.next(); // 燕子的编号
leftSwallows.add(id);
}
int M = sc.nextInt(); // 飞回的燕子数量
ArrayList<String> returnedSwallows = new ArrayList<>();
for (int i = 0; i < M; i++) {
String id = sc.next(); // 燕子的编号
returnedSwallows.add(id);
}
Collections.sort(leftSwallows);
Collections.sort(returnedSwallows);
ArrayList<String> missingSwallows = new ArrayList<>();
ArrayList<String> newSwallows = new ArrayList<>();
for (String id : leftSwallows) {
if (!returnedSwallows.contains(id)) {
missingSwallows.add(id);
}
}
for (String id : returnedSwallows) {
if (!leftSwallows.contains(id)) {
newSwallows.add(id);
}
}
int missingCount = missingSwallows.size();
int newCount = newSwallows.size();
if (missingCount > 0) {
System.out.println("Missing: " + missingCount);
for (String id : missingSwallows) {
System.out.println(id);
}
} else {
System.out.println("All Back");
}
if (newCount > 0) {
System.out.println("New: " + newCount);
for (String id : newSwallows) {
System.out.println(id);
}
} else {
System.out.println("All Known");
}
}
}
```
您可以将以上代码保存为`SwallowInfo.java`文件,然后编译运行该程序。程序会根据输入的飞走和飞回燕子的信息,输出没有回来的燕子和新增燕子的信息。
请注意,以上代码假设输入的数据格式是正确的,没有进行输入格式验证。如果输入不符合要求的格式,程序可能会出现异常。
阅读全文