码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • Java 华为真题-小朋友分班


    需求: 

    题目描述

    幼儿园两个班的小朋友在排队时混在了一起,每位小朋友都知道自己是否与前面一位小朋友同班,请你帮忙把同班的小朋友找出来小朋友的编号是整数,与前一位小朋友同班用Y表示,不同班用N表示学生序号范围(0,999],如果输入不合法则打印ERROR。

    输入描述

            输入为空格分开的小朋友编号和是否同班标志

    输出描述

            输出为两行,每一行记录一个班小朋友的编号,编号用空格分开,且:

            1.编号需按照升序排列,分班记录中第一个编号小的排在第一行。

            2.若只有一个班的小朋友,第二行为空行。

    输入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. public class TestClass {
    2. public static void main(String[] args) {
    3. //1/N 2/Y 3/N 4/Y
    4. //6/N 2/Y 3/N 4/Y 5/Y 7/N 8/Y
    5. Scanner scanner = new Scanner(System.in);
    6. System.out.print("输入小朋友的编号:");
    7. String str = scanner.nextLine();
    8. // System.out.println(str);
    9. String[] childrens = str.split(" ");
    10. // System.out.println(Arrays.toString(childrens));
    11. //创建双端队列对象
    12. ArrayDeque arr_one = new ArrayDeque<>();
    13. ArrayDeque arr_two = new ArrayDeque<>();
    14. //调用方法
    15. getBranch(childrens, arr_one, arr_two);
    16. show(arr_one);
    17. show(arr_two);
    18. }
    19. /**
    20. * 显示数据
    21. *
    22. * @param arr
    23. */
    24. private static void show(ArrayDeque arr) {
    25. //使用Lambda,分割之后,再进行排序。
    26. System.out.println(arr.stream().map(s -> s.split("/")[0]).sorted().collect(Collectors.joining(" ")).trim());
    27. }
    28. /**
    29. * 分班
    30. * @param childrens
    31. * @param arr1
    32. * @param arr2
    33. */
    34. private static void getBranch(String[] childrens, ArrayDeque arr1, ArrayDeque arr2) {
    35. ArrayDeque temp = null;
    36. //循环
    37. for (String chs :
    38. childrens) {
    39. //判断当前对象是否为空
    40. if (Objects.isNull(temp)) {
    41. temp = arr1; //给当前队列赋值
    42. } else if (chs.endsWith("N")) { //判断尾端是否为N
    43. temp = temp.equals(arr1) ? (arr2) : (arr1);
    44. }
    45. //添加到最后
    46. temp.offerLast(chs);
    47. }
    48. }
    49. }

    效果: 

     

  • 相关阅读:
    DOTA-PEG-葡萄糖 DOTA-葡萄糖
    蓝牙智能音箱采用哪些音频功放芯片
    【组成原理-处理器】微程序控制器
    [LeetCode周赛复盘] 第 306 场周赛20220814
    还在使用mybatis的xml逐个映射字段?来看看mybatis返回Map(三种使用方式)
    资本+商业模式+中国制造的出海跨境电商,走向世界!(Starday)
    React-Hooks怎样封装防抖和节流-面试真题
    安全认证框架Shiro入门学习(shiro概述和shiro入门小案例);后续整合SpringBoot,应用程序安全;
    MOSFET, MOS管, 开关管笔记
    前端同一个接口同时被调用两次的原因
  • 原文地址:https://blog.csdn.net/hlx20080808/article/details/133682667
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号