全网最全面的华为OD机试真题汇总,100%原题题库,不需要开会员即可查看全部内容,更多考题请查看真题库。
真题库:https://www.yuque.com/codernav.com/od
题目:箱子之形摆放
知识点:数组
时间限制:1s 空间限制:128MB 限定语言:不限
题目描述:
有一批箱子(形式为字符串,设为str),要求将这批箱子按从上到下以之形的顺序摆放在宽度为n的空地,请输出箱子的摆放结果。
例如:箱子为ABCDEFG,空地宽度为3,摆放结果如图:
则输出结果为:
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); } } }
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...