华为OD机试真题B卷 Java 实现【箱子之形摆放】,附详细解题思路

news2024/11/13 14:42:48

一、题目描述

要求将一批箱子按从上到下以‘之’字形的顺序摆放在宽度为 n 的空地上,输出箱子的摆放位置,例如:箱子ABCDEFG,空地宽为3。

摆放效果如下图:
在这里插入图片描述
则输出结果为:

AFG
BE
CD

二、输入描述

一行字符串,通过空格分割两部分,前面str部分表示箱子的字符串由数字或字母组成,后面部分是表示宽度的数字n,

如下:

ABCDEFG 3

三、输出描述

输出:

AFG
BE
CD

注:最后一行不得输出额外的空行

str只包含数字和数字,1<=len(str)<=1000,1<=n<=1000。

四、解题思路

  1. 将输入的字符串按空格分割为两部分,分别为箱子的字符串和空地的宽度;
  2. 创建一个HashMap map,用于存储每行的字符串;Key为行的下标,Value为对应的字符串;
  3. 遍历箱子的字符串,根据空地的宽度确定每个字符应该放置的行和列;
    • 计算当前字符所在的列,即columnIdx = i / num,其中i为当前字符的索引;
    • 如果columnIdx是偶数,则表示从左往右摆放,行索引不变,列索引为i % num;
    • 如果columnIdx是奇数,则表示从右往左摆放,行索引不变,列索引为num - 1 - (i % num),即倒序摆放;
    • 将当前字符添加到对应行的字符串中;
  4. 遍历HashMap map,按行输出箱子的摆放位置;
  5. 输出结果。

五、Java算法源码

public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String line = sc.nextLine();
    String[] arr = line.split(" ");
    // 表格的行数
    int num = Integer.parseInt(arr[1]);

    //key:每一行的下标,value:对应的字符串
    Map<Integer, String> map = new HashMap<>();
    String strs = arr[0];
    for (int i = 0; i < strs.length(); i++) {
        int columnIdx = i/num;
        // 序号
        int index;
        if (columnIdx % 2 == 0) {
            //偶索引正序
            index = i % num;
        }else {
            //奇数列倒序
            index = num - 1 - i % num;
        }
        String str = map.getOrDefault(index, "");
        String val = str + strs.charAt(i);
        map.put(index, val);

    }
    for (int key : map.keySet()) {
        System.out.println(map.get(key));
    }
}

六、效果展示

1、输入

ABCDEFGHIJKMLN 4

2、输出

AHI
BGJ
CFKN
DEML

3、说明

关键是要看破【偶索引正序、奇数列倒序】。

在这里插入图片描述

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【不爱施肥的小布】【2023Q2 100分】

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/594543.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

智能语音交互流程

引言 用该文来讲解语音全流程涉及到的技术&#xff0c;整体语音涉及的交互流程如下图&#xff1a; Part1 唤醒 语音唤醒指的是通过预设的关键词即可将智能硬件从休眠状态唤醒&#xff0c;来执行相应操作。 1.1 交互模式 传统模式 唤醒方式&#xff1a;先唤醒设备&#xff…

重学数据结构与算法

学习数据结构与算法的目的&#xff1a; 优化时间复杂度与空间复杂度 优化时间复杂度与空间复杂度 优化时间复杂度与空间复杂度 教程总纲&#xff1a; 暴力解法(模拟)、算法优化(递归/二分/排序/DP)、时刻转换(数据结构) 1.时间复杂度的核心方法论2.增删查——选取数据结构的基…

MySQL_9 事务机制与隔离机制

目录 一、事务概述 1.定义 : 2.事务和锁 : 二、事务操作 1.MySQL控制台事务的基本操作 : 2.代码演示 : 3.注意事项 : 三、事务的“ACID”特性 : 四、隔离机制 1.介绍 : 2.分类 : 3.常用指令 : 一、事务概述 1.定义 : 事务用于保证数据的一致性&#xff0c;它由一…

python批量实现pdf转换为图片|实现pdf转为jpg/png|实现word批量转pdf|python批量实现word转换为图片

本文介绍了一种使用 Python 脚本来完成这项工作的方法&#xff0c;该脚本基于 PyMuPDF、pdf2image 和 win32com 库实现&#xff0c;可以帮助您快速地将 Word 文档转换为 PDF 文件&#xff0c;并将 PDF 文件转换为 PNG 图片。 一、安装所需的库和软件 在开始使用该脚本之前&am…

AWTK实现汽车仪表Cluster/DashBoard嵌入式GUI开发(一):概述

AWTK=Toolkit AnyWhere,一款国产免费开源工具,ZLG开发的开源GUI引擎,为嵌入式等系统提供图形界面开发IDE。 随着汽车技术的发展,汽车仪表盘也在快速发展,从最初的机械式到电气式,再到数字化。这次电动化、智能化又一次让汽车仪表出现了飞跃式的发展,再未来,仪表板上可…

04SpringCloud 消息中间件

为什么要使用消息中间件 同步通信&#xff1a;耗时长&#xff0c;受网络波动影响&#xff0c;不能保证高成功率&#xff0c;耦合性高。 同步&#xff0c;异步 并发&#xff1a;一段时间&#xff08;1S&#xff09;多个请求数 并行&#xff1a;时间节点&#xff0c;多个指令…

干接点与湿接点

&#xff08;1&#xff09;干接点的定义 无源开关&#xff1b;具有闭合和断开的2种状态&#xff1b;2个接点之间没有极性&#xff0c;可以互换。 常见的干接点信号有&#xff1a; 1&#xff09;各种开关如&#xff1a;限位开关、行程开关、脚踏开关、旋转开关、温度开关、液…

超越象限:解密 α 碎片的归属问题

文章目录 参考环境α 碎片的归属问题问题概述终边相同角圆心角终边相同角 象限角 描述象限角第一象限角任意象限角 特殊方案问解 叠加坐标系上部下部叠加坐标系 一般方案问解任意角 α分析绘图要领叠加坐标系N-N 参考 项目描述搜索引擎Google 、Bing百度百科首页佟大大还是ETT…

苹果iPhone14如何批量删除联系人?iPhone 14批量删除联系人方法

苹果iPhone 14如何批量删除联系人&#xff1f;手动一个个删实在太麻烦了&#xff01; 苹果iPhone 14手机的通讯录本身不支持批量删除联系人&#xff0c;但是如果通讯录在iCloud中开启过备份&#xff0c;就可以对联系人进行批量操作。 需要注意的是&#xff0c;iPhone 14手机端…

聊聊开源的类ChatGPT工作——ChatGLM

这是”聊聊开源的类ChatGPT工作“的第二篇&#xff0c;写第一篇[7]的时候&#xff0c;当时恰巧MOSS开源&#xff0c;就顺手写了MOSS。但要问目前中文领域的“开源”的语言模型谁更强&#xff0c;公认的还是ChatGLM-6B&#xff08;以下简称ChatGLM&#xff09;。 下面是官方对C…

【20230531】Git命令和Github相关使用

1 在Git中缓存GitHub凭据 根据系统下载对应的GitHub CLI 2.25.1 2. github主页&#xff0c;点击用户头像选择settings->Developer Settings->Personal access tokens申请密钥&#xff08;主要分为Fine-grained tokens和Tokens classic&#xff09;gh需要使用的是Tokens …

Spring Boot如何实现接口文档自动生成

Spring Boot如何实现接口文档自动生成 在开发Web应用程序时&#xff0c;接口文档是非常重要的一环&#xff0c;它可以帮助我们快速了解API的功能和使用方法&#xff0c;同时也是与其他开发人员和团队协作的重要工具。然而&#xff0c;手动编写和维护接口文档是一项繁琐的工作&…

商品上架业务

一.商品上架操作 将检索数据存入es&#xff0c;更改商品上架状态为已上架 二.业务设计 &#xff08;1&#xff09;设计检索数据 分析&#xff1a;商品上架在 es 中是存 sku 还是 spu&#xff1f; 1&#xff09;、检索的时候输入名字&#xff0c;是需要按照 sku 的 title 进行…

给大龄准备转行网络工程师的朋友一些建议

我一直认为&#xff0c;网络工程师是一个看能力而不是看年龄的工作。 大龄转行网络工程师到底有没有机会&#xff1f;很多三十多岁的朋友对于跨行业完全心里没底&#xff0c;冒然转行学习网工又不知道从何学起。今天就给大家整理几个在学习网络工程师的时候需要注意的地方&…

Linux系统下imx6ull QT编程—— C++数据封装与数据抽象(八)

Linux QT编程 文章目录 Linux QT编程前言一、数据封装二、数据抽象 前言 封装是面向对象编程中的把数据和操作数据的函数绑定在一起的一个概念&#xff0c;这样能避免受到外界的干扰和误用&#xff0c;从而确保了安全。数据封装引申出了另一个重要的 OOP 概念&#xff0c;即数…

用JavaScript做一个拼图游戏

喜欢的可以复制下面完整代码查看效果在自己本地查看效果 实现难度&#xff1a;不算大&#xff0c;毕竟是小游戏 开发工具&#xff1a;html&#xff0c;css&#xff0c;js&#xff0c;jquery 效果截图 完整代码 <!DOCTYPE html> <html lang"en"> <he…

24届秋招专场·双指针巧解链表套路题

你好&#xff0c;我是安然无虞。 文章目录 合并两个有序链表分隔链表合并K个有序链表链表中倒数最后K个节点变形题: 删除链表的倒数第N个节点链表的中点判断链表是否有环环形链表II相交链表 大家好, 好久不见了, 从今天开始, 后面会经常更新笔试面试真题, 准备今年24届秋招的小…

Centos7安装Kubernetes 1.27.2

目录 一、准备工作 二、容器运行时 三、安装kubelet 、kubeadm、 kubectl 四、配置CNI 五、安装nginx 一、准备工作 1、更新yum源安装 vim、net-tools等工具&#xff08;每个节点都执行&#xff09; yum update -yyum install vim -yyum install net-tools -y 2、配置每…

简单移位器结构介绍

移位器 一位可控移位器 其实是一个复杂的多路开关电路&#xff0c;根据不同控制信号&#xff0c;将输入左移或右移或不变。多位的移位可以简单串联这样的单元实现&#xff0c;但移位位数多时&#xff0c;该方法过于复杂&#xff0c;不实用并且速度很慢。 桶形移位器 由晶体管…

C.12 军事领域关系抽取:UIE Slim最新升级版含数据标注、serving部署、模型蒸馏、可视化高亮展示等,助力工业应用场景快速落地

NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型压缩算法等 专栏详细介绍:NLP专栏简介:数据增强、智能标注、意图识别算法|多分类算法、文本信息抽取、多模态信息抽取、可解释性分析、性能调优、模型…