题目:
幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友
是否同班,请你帮忙把同班的小朋友找出来。
小朋友的编号为整数,与前一位小朋友同班用 Y 表示,不同班用 N 表示。
输入描述:
输入为空格分开的小朋友编号和是否同班标志。
比如:6/N 2/Y 3/N 4/Y,表示共 4 位小朋友,2 和 6 同班,3 和 2 不同班,4 和 3 同班。
其中,小朋友总数不超过 999,每个小朋友编号大于 0,小于等于 999。
不考虑输入格式错误问题。
输出描述:
输出为两行,每一行记录一个班小朋友的编号,编号用空格分开。且:
1、编号需要按照大小升序排列,分班记录中第一个编号小的排在第一行。
2、若只有一个班的小朋友,第二行为空行。
3、若输入不符合要求,则直接输出字符串 ERROR。
补充说明:
示例 1
输入:
1/N 2/Y 3/N 4/Y
输出:
1 2
3 4
说明:
2 的同班标记为 Y,因此和 1 同班。
3 的同班标记为 N,因此和 1、2 不同班。
4 的同班标记为 Y,因此和 3 同班。
所以 1、2 同班,3、4 同班,输出为
1 2
3 4
题解:
这个比较简单,建立两个动态数组表示1班和2班,然后在判断的时候,用一个bool值isClassOne表示当前指定的是1班,除了第一个小朋友默认为第一班以外,其余小朋友数据根据,Y,N值来变动,是Y的话,并且isClassOne = true的话,那么就是这个就是1班的,否则就是2班的,同时isClassOne翻转变为false,表示当前指定为2班。按照这个逻辑判断就可以了
代码实现:
import java.util.ArrayList;
import java.util.List;
import java.util.Scanner;
import java.util.stream.Collectors;
public class SplitChild {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String[] childs = sc.nextLine().split(" ");
List<Integer> class1 = new ArrayList<>();
List<Integer> class2 = new ArrayList<>();
boolean isClassOne = true;
for (int i = 0; i < childs.length; i++) {
String[] child = childs[i].split("/");
boolean isSomeClass = child[1].equals("Y");
if (i == 0) {
isClassOne = true;
class1.add(Integer.valueOf(child[0]));
continue;
}
if (isSomeClass) {
if (isClassOne) {
class1.add(Integer.valueOf(child[0]));
} else {
isClassOne = false;
class2.add(Integer.valueOf(child[0]));
}
} else {
if (isClassOne) {
isClassOne = false;
class2.add(Integer.valueOf(child[0]));
} else {
isClassOne = true;
class1.add(Integer.valueOf(child[0]));
}
}
}
class1.stream().sorted().collect(Collectors.toList());
class2.stream().sorted().collect(Collectors.toList());
StringBuilder sb1 = new StringBuilder();
StringBuilder sb2 = new StringBuilder();
for (int i = 0; i < class1.size(); i++) {
if (i != 0) {
sb1.append(" ");
}
sb1.append(class1.get(i));
}
for (int j = 0; j < class2.size(); j++) {
if (j != 0) {
sb2.append(" ");
}
sb2.append(class2.get(j));
}
if (class2.size() > 0) {
if (class1.get(0) < class2.get(0)) {
System.out.println(sb1);
System.out.println(sb2);
} else {
System.out.println(sb2);
System.out.println(sb1);
}
}
if (class2.size() == 0) {
System.out.println(sb1);
}
}
}
输出验证: