世界已冷酷至极, 让我们携手前行。
自助收录

2023年华为OD机考真题:箱子之形摆放

算法刷题1年前 (2023)更新 江南白衣
544 0 0
2023年华为OD机考真题:箱子之形摆放

全网最全面的华为OD机试真题汇总,100%原题题库,不需要开会员即可查看全部内容,更多考题请查看真题库。

真题库:https://www.yuque.com/codernav.com/od

题目:箱子之形摆放
知识点:数组
时间限制:1s 空间限制:128MB 限定语言:不限
题目描述:
有一批箱子(形式为字符串,设为str),要求将这批箱子按从上到下以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。
例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图:

2023年华为OD机考真题:箱子之形摆放
则输出结果为:
AFG
BE
CD
输入描述:
输入一行字符串,通过空格分割,前面部分为字母或数字组成的字符串str,表示箱子;后面部分为一个数字n,表示空地的宽度。例如:
ABCDEFG 3
输出描述:
箱子摆放结果,如题目示例所示
AFG
BE
CD
补充说明:
1. 请不要在最后一行输出额外的空行
2. str只包含字母和数字,1 <= len(str) <= 1000
3. 1 <= n <= 1000
示例1
输入:
ABCDEFG 3
输出:
AFG
BE
CD
解题思路:
使用map键值对来放置位置和箱子;依靠对空地大小进行取余来获取位置。

代码实现:

package com.codernav.demo.hwod.exam;

import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;

/**
 * @title 箱子之形摆放
 * @Description 有一批箱子(形式为字符串,设为str),要求将这批箱子按从上到下以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。
 * 例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图
 * @Author 开发者导航
 * @website https://codernav.com
 * @date 2023/5/13
 */
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        String[] strings = sc.nextLine().split(" ");
        String box = strings[0];
        int n = Integer.parseInt(strings[1]);
        Map<Integer, StringBuffer> map = new HashMap<>();
        for (int i = 0; i < box.length(); i++) {
            int index;    //用索引取余来确定箱子的位置
            if (i / n % 2 == 0) {     //偶数列为正序,奇数列为倒序
                index = i % n;
            } else {
                index = n - 1 - i % n;
            }
            char c = box.charAt(i);
            if (map.containsKey(index)) {
                map.get(index).append(c);
            } else {
                map.put(index, new StringBuffer().append(c));
            }
            //map.put(index, map.getOrDefault(index, new StringBuffer()).append(c));
        }

        for (StringBuffer sb : map.values()) {
            System.out.println(sb);
        }
    }
}

 

© 版权声明

相关文章

开发者导航新手教程

暂无评论

暂无评论...