华为OD2023(A卷)基础题3【箱子之字形摆放】

本文为博客 VIP 文章,开通 VIP 后可阅读全文

开通 VIP

3箱子之字形摆放

题目描述
有一批箱子(形式为字符串,设为str),
要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子的摆放位置。
例如:箱子ABCDEFG,空地宽度为3,摆放结果如图:

在这里插入图片描述
则输出结果为:
AFG
BE
CD

解题思路:
这道题要求将一个字符串按照 n 行的 Z 字形排列,然后返回按行读取所得到的新字符串。我们可以用模拟的方法来解决这个问题。

具体实现步骤如下:

  1. 创建一个数组 rows,其中包含 n 个空字符串,用于存储每一行的字符。
  2. 定义两个变量 curRow 和 goingDown,分别表示当前行号和是否向下移动。
  3. 遍历字符串中的每个字符,将其添加到 rows[curRow] 中,并根据 goingDown 的值更新 curRow。
  4. 如果 curRow 等于 0 或 n−1,则反转 goingDown的值,以改变方向。
  5. 将 rows 转换成字符串列表并返回。

该算法的时间复杂度为 O(n),空间复杂度为 O(n),其中 n 是行数。该算法使用了模拟的思想,不需要任何高级数据结构或算法,因此主要考察的是编程能力和对基本数据结构的理解和运用。

下面是Java代码实现

import java.util.*;

public class ZigzagLayout {
   
   
    public static void main(String[] args) {
   
   
        printBox("ABCDEFG",3);
    }
    public static void printBox(String str, int n) {
   
   
        // 计算行数
        int rows = (int) Math.ceil((double) str.length() / n);
        // 创建二维数组
        char[][] arr = new char[rows][n];
        // 初始化二维数组
        for (int i = 0; i < rows; i++) {
   
   
            Arrays.fill(arr[i], ' ');
        }
       
【100%通过率】华为OD机试真 JavaScript 实现【箱子之字形摆放】【2023 Q1 | 100分】 有一批箱子(形式为字符串,设为str),要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。 阅读详情

相关推荐

【100%通过率】华为机试真 C++ 实现【箱子之字形摆放】【2022.11 Q4 新

有一批箱子(形式为字符串,设为str),要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。

MISAYAONE的博客 8677

华为OD机试-箱子之字形摆放-通过所有用例

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

jiutianmuzi的博客 363

2026华为OD机试(JavaScript)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,JavaScript实现。

MISAYAONE的博客 8万+

华为OD目:箱子之形摆放

str只包含数字和数字,1<=len(str)<=1000,1<=n<=1000。注:最后一行不得输出额外的空行。

weixin_45611920的博客 503

2026华为OD机试(C语言)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,C语言实现。

MISAYAONE的博客 11万+

2026华为OD机试(Python)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,Python实现。

MISAYAONE的博客 28万+

2026华为OD机试(C++)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,C++实现。

MISAYAONE的博客 20万+

2023华为OD机试 - 箱子之形摆放JavaScript)

箱子之形摆放 目 有一批箱子(形式为字符串,设为 str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。 例如:箱子 ABCDEFG,空地宽度为 3摆放结果如图:

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 3724

华为OD机试Golang解 - 箱子之形摆放

如果想要在华为od机试中获取高分,一定要不要完全背诵代码,需要理解之后模仿写出,分数才会高。输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串 str,表示箱子;后面部分为数字 n,表示空地的宽度。例如:ABCDEFG 3字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。有一批箱子(形式为字符串,设为 str),👍 阅读完毕,可以点点小手赞一下。🌻 发现错误,直接评论区中指正吧。箱子摆放结果,如目示例所示。要求将这批箱子按从上到下以。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 5810

华为OD机试,用 Java 解【箱子之形摆放】问

参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串 str,表示箱子;为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。后面部分为数字 n,表示空地的宽度。字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。箱子之形摆放目有一批箱子(形式为字符串,设为 str),要求将这批箱子。有一批箱子(形式为字符串,设为 str),试来源:华为 OD 联盟整理收集。箱子摆放结果,如目示例所示。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 3302

【独家】华为OD机试提供C语言解 - 箱子之形摆放

箱子之形摆放 参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串 str,表示箱子;后面部分为数字 n,表示空地的宽度。例如:ABCDEFG 3字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。有一批箱子(形式为字符串,设为 str),👍 阅读完毕,可以点点小手赞一下。🌻 发现错误,直接评论区中指正吧。从订购之日起,案例5年内保证更新。箱子摆放结果,如目示例所示。要求将这批箱子按从上到下以。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 3339

华为OD历年真 - 华为OD统一考试A2023 年 A

华为OD历年真 - 华为OD统一考试A2023 年 A

算法大师! 1183

2026华为OD机试(JAVA&Go)真【E+A+B+C+D】目录+在线OJ

华为OD机试真库【E+A+B+C+D】目录,Java实现。

MISAYAONE的博客 34万+

华为OD机试真Python实现【箱子之形摆放】真+解思路+代码(2022&2023

:是 Python 中一种简洁的创建列表的方法,它可以使用一行代码创建一个包含多个空列表的列表。输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串str,表示箱子;为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。为原创内容,该部分版权由 OD 联盟共同拥有,并授权组内成员发布。字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。后面部分为数字n,表示空地的宽度。有一批箱子(形式为字符串,设为str),试来源:华为 OD 联盟整理收集。箱子摆放结果,如目示例所示。

码莎拉蒂 1939

华为OD机试 - 箱子之形摆放(C++) | 附带编码思路 【2023

箱子之形摆放 目 有一批箱子(形式为字符串,设为 str), 要求将这批箱子按从上到下以之字形的顺序摆放在宽度为 n 的空地,请输出箱子摆放位置。 例如:箱子 ABCDEFG,空地宽度为 3摆放结果如图: 在这里插入图片描述 则输出结果为: AFG BE CD 输入 输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串 str,表示箱子; 后面部分为数字 n,表示空地的宽度。例如:ABCDEFG 3参加华为od机试,一定要注意不要完全背诵代码,需要理解之后模仿写出,通过率才会高。

梦想橡皮擦,专栏100例写作模式先行者,现象级专栏 《Python 爬虫 100 例》作者、《滚雪球学 Python 专栏》原创者 3936

华为OD机试c++/java/python 真2023 Q1】

最后收集了华为OD机试前线最新战况,快来看看刚考完的小伙伴们都考到了哪些目吧! 是不是有点迫不及待了? 对于这些别人考过的真一定要掌握熟练,说不定你也会考到哦!

goldarmour的博客 8176

华为OD机试 2023箱子之字形摆放(C++ Java JavaScript Python)

输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串str,表示箱子;当遇到 i % n ==0时,变换公式为:行数 = n - 1 - (i%n),当遇到 i%n==0时,再变换公式为:行数 = i % n,D 第4位(1,1) 3- 1- (4%3)D 第3位(2,1) 3-1- (3%3)D 第5位(0,1) 3-1-(5%3)行数 = n - 1 - (i%n),初始时,用公式:行数 = i % n,A 第0为(0,0) 行0%3。B 第1位(1,0) 行1%3

2301_77273748的博客 2156

2026华为OD机考新系统真 + 双机位C + 往年真 - 库目录分值说明 + 考点说明+在线OJ

2026年4月1日起,华为OD机试正式切换至新系统模式!采用力扣模式,无需自己写输入! 难度大幅度降低。正在备考华为OD机试的同学,优先刷新系统机试真,可大幅提升通过率。 新系统考考点与旧版一致,无需重新适应。本专栏所有算法均配有详细思路解析,并提供C语言、JS、C++、Python、Go、Java多语言源码实现。订阅后私信即可开通专属OJ刷权限,高效备考一次上岸!

算法大师! 45万+
上一篇: 华为OD2023(A卷)基础题2【字符串重新排列】
下一篇: 华为OD2023(A卷)基础题4【完美走位】
大司码
博客等级 码龄10年 18粉丝 · 42原创
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值