首页 > 其他分享 >【华为OD机试】箱子之字形摆放

【华为OD机试】箱子之字形摆放

时间:2024-11-09 13:50:45浏览次数:3  
标签:index 之字形 箱子 OD 摆放 lists str 字符串 机试

题目描述

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

例如:箱子ABCDEFG,空地宽度为3,摆放结果如图:

则输出结果为:

AFG
BE
CD

输入描述

输入一行字符串,通过空格分隔,前面部分为字母或数字组成的字符串str,表示箱子;
后面部分为数字n,表示空地的宽度。例如:

ABCDEFG 3

输出描述

箱子摆放结果,如题目示例所示

AFG
BE
CD

备注

请不要在最后一行输出额外的空行

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

1 <= n <= 1000

测试样例1

输入:

ABCDEFG 3

输出:

AFG
BE
CD

解题思路

解题思路如下:

  1. 输入处理:首先,我们需要读取输入,它由两部分组成:一个字符串str和一个整数n。这个整数n表示空地的宽度,也就是每行可以摆放的箱子数量。
  2. 初始化:我们将字符串str转换为字符数组chars,这样可以方便我们按顺序访问每个字符。同时,我们初始化一个列表lists,它包含了n个空列表,用于存储按照之字形摆放的箱子。
  3. 双指针法:我们使用一个索引index来跟踪当前要填充的行,以及一个布尔变量asc来指示我们是在向上填充(True表示递增)还是在向下填充(False表示递减)。
  4. 填充箱子:我们遍历每个字符,根据asc的值来决定是递增还是递减index。如果index超出了lists的范围,我们翻转方向并重置index
  5. 之字形摆放:在填充每个列表时,我们根据asc的值来决定是将字符添加到lists[index]的开头还是末尾。由于题目要求是从上到下摆放,我们选择将字符添加到末尾。
  6. 输出结果:最后,我们遍历lists中的每个子列表,并打印出每个子列表的内容,这样就得到了之字形摆放的箱子。
  7. 特殊情况处理:如果输入的字符串长度小于n,我们不需要做特殊处理,因为代码已经能够正确处理这种情况。如果字符串长度大于n,我们的代码也能够处理,因为它会按照之字形的规则继续摆放箱子。

通过上述步骤,我们可以得到一个简洁且有效的解决方案。这个解决方案的时间复杂度是O(m),其中m是输入字符串的长度,因为我们只需要遍历一次字符串。空间复杂度是O(n),因为我们需要存储每行的字符。

Python代码解析

def solution(line):
    # 分割输入行,获取字符串和n的值
    str_part, n_str = line.split(" ")
    n = int(n_str)
    # 将字符串转换为字符数组
    chars = list(str_part)
    # 初始化列表,用于存储每个子列表
    lists = [[] for _ in range(n)]

    index = 0
    asc = True  # 标志位,指示当前是递增还是递减

    # 遍历字符数组,按照规则填充子列表
    for c in chars:
        if index == -1:
            index = 0
            asc = True
        if index == n:
            index = n - 1
            asc = False
        lists[index].append(c)

        if asc:
            index += 1
        else:
            index -= 1

    # 打印结果
    for sub_list in lists:
        print(''.join(sub_list))


def main():
    line = input()  # 读取输入
    solution(line)  # 调用solution函数并打印结果


if __name__ == "__main__":
    main()

标签:index,之字形,箱子,OD,摆放,lists,str,字符串,机试
From: https://blog.csdn.net/weixin_66855397/article/details/143578435

相关文章

  • shodan(1)
    以下笔记学习来自B站泷羽Sec:B站泷羽Secshodan是一个搜索引擎,网址:https://www.shodan.io/用于专门搜索网络设备(手机,电脑,摄像头,服务器,路由器等)1.网络设备只要是可以联网,有ip地址的都可以称为网络设备2.shodan工作原理在服务器上部署了各种扫描器,这些扫描器也就是我们......
  • 大模型面试题:为什么大模型都是Decoder-only结构?
    更多面试题的获取方式请留意我的昵称或看评论区为什么大模型都是Decoder-only结构?在探讨当前大型语言模型(LLM)普遍采用Decoder-only架构的现象时,我们可以从以下几个学术角度进行分析:注意力机制的满秩特性:Decoder-only架构采用的因果注意力机制(causalattention)形成了一个下......
  • node.js毕设校园志愿者服务系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于校园志愿者服务系统的研究,现有研究主要集中在志愿者管理、活动信息发布和反馈等方面,专门针对校园内志愿者服务系统的研究较少。在国内外,志愿者服务......
  • node.js毕设校园订餐系统(程序+论文)
    本系统(程序+源码+数据库+调试部署+开发环境)带文档lw万字以上,文末可获取源码系统程序文件列表开题报告内容一、选题背景关于校园订餐系统的研究,现有研究主要集中在订餐系统的基本功能实现、用户体验优化等方面,专门针对校园内订餐系统的特殊需求和功能设计的研究较少。在国......
  • Sigrity SPEED2000 Power Ground Noise Simulation模式如何进行电源地噪声分析操作指
    SigritySPEED2000PowerGroundNoiseSimulation模式如何进行电源地噪声分析操作指导-SODIMMSigritySpeed2000是时域仿真分析工具,PowerGroundNoiseSimulation模式可以观测器件的时域电压波形和观测电源地空间电压分布,以下图为例进行分析用Speed2000这个工具打开文件......
  • LeetCode 171[Excel表列序号]
    题目链接LeetCode171[Excel表列序号]详情实例提示题解思路这其实是一道26进制的算术题其中A的权重为1,B的权重为2,C的权重为3,D的权重为4,E的权重为5,F的权重为6,G的权重为7H的权重为8,I的权重为9,J的权重为10,K的权重为11,L的权重为12,M的权重为13N的权重为14,O的权重为15,P的......
  • 华为OD机试2024年真题题库(A卷+B卷+C卷+D卷+E卷)
    文章目录一、什么是华为OD,什么是华为OD机试?二、华为OD面试流程?三、华为OD机试通过率高吗?四、华为OD薪资待遇?五、大家比较关注问题的FAQ......
  • 【华为OD技术面试手撕真题】82、环形链表II | 手撕真题+思路参考+代码解析(C & C++ & J
    文章目录一、题目......
  • Vmware Workstation Pro出现不可恢复错误:NOT_IMPLEMENTED bora\lib\unicode\unicod
    该问题今天被我碰到了,百度搜索无果后在Google搜到了官方community也有国人抱怨这个问题,他指出17.6.1版本经常碰到这个问题,于是我一路退回退回到17.5.2版本就好了,估计这是新版本的bug。这个bug和一个utf8编码的库出现错误有关。参见:https://community.broadcom.com/vmware-cloud-f......
  • LeetCode100之旋转图像(48)--Java
    1.问题描述  给定一个 n × n 的二维矩阵 matrix 表示一个图像。请你将图像顺时针旋转90度。你必须在 原地 旋转图像,这意味着你需要直接修改输入的二维矩阵。请不要 使用另一个矩阵来旋转图像。        示例1输入:matrix=[[1,2,3],[4,5,6],[7,8,9]]......