【算法题】分班

908次阅读
一条评论

共计 1537 个字符,预计需要花费 4 分钟才能阅读完成。

幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友是否同班,请你帮忙把同班的小朋友找出来。
小朋友的编号为整数,与前一位小朋友同班用Y表示,不同班用N表示。

  • 输入为:空格分开的小朋友编号和是否同班标志。
    比如:6/N 2/Y 3/N 4/Y,表示共4位小朋友,2和6同班,3和2不同班,4和3同班。
    其中,小朋友总数不超过999,每个小朋友编号大于0,小于等于999。
    不考虑输入格式错误问题。
  • 输出为:两行,每一行记录一个班小朋友的编号,编号用空格分开。且:
  • 编号需要按照大小升序排列,分班记录中第一个编号小的排在第一行。
  • 若只有一个班的小朋友,第二行为空行。
  • 若输入不符合要求,则直接输出字符串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

import java.util.ArrayList;
import java.util.Comparator;
import java.util.Scanner;

/**
 * @since 2022年4月18日
 */
public class DivideClass {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String teamStr = scanner.nextLine();

        String[] childs = teamStr.split(" ");
        if (childs.length > 999) {
            System.out.println("ERROR");
        }
        // 分开两个班级
        ArrayList<String> classA = new ArrayList<>();
        ArrayList<String> classB = new ArrayList<>();
        String classNum = "";
        for (int i = 0; i < childs.length; i++) {
            if (i == 0) {
                String first = childs[0];
                classA.add(first.split("/")[0]);
                classNum = "A";
                continue;
            }
            String follow = childs[i];
            boolean isSameClass = follow.endsWith("Y");
            String stu = follow.split("/")[0];
            if ("A".equals(classNum)) {
                if (isSameClass) {
                    classA.add(stu);
                } else {
                    classB.add(stu);
                }
                classNum = isSameClass ? "A" : "B";
            } else {
                if (isSameClass) {
                    classB.add(stu);
                } else {
                    classA.add(stu);
                }
                classNum = isSameClass ? "B" : "A";
            }
        }

        classA.sort(Comparator.comparingInt(Integer::parseInt));
        classB.sort(Comparator.comparingInt(Integer::parseInt));

        System.out.println(classA.toString().replace("[", "").replace("]", "").replace(",", " "));
        System.out.println(classB.toString().replace("[", "").replace("]", "").replace(",", " "));
    }
}
正文完
 0
裴先生
版权声明:本站原创文章,由 裴先生 2022-04-19发表,共计1537字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(一条评论)
EuWQvTUyYzH 评论达人 LV.1
2024-03-15 22:36:31 回复

算法题库分班

 Windows  Chrome  伊朗
本站勉强运行: