全网最全面的华为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);
}
}
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...
