图片表格内容识别转换-II - 华为机试真题题解(Java)

考试平台: 时习知

分值: 200分

考试时间: 两小时(共2题)

华为机试真题

题目描述

华为云推出了“通用表格识别”服务,可以将图片表格转换成文本数据。请你将文本数据进一步转换为“文本型表格”,如下图所示:

图片表格内容识别转换-II

输入

现给出一个图片表格的文本数据:

  • 每行数据形如 line3 col1 A,表示第3行第1列的单元格的内容为 A
  • 表格的行和列都从 1开始; 文本数据中行、列的最大值分别为表格的行、列数。
  • 内容为由英文字符A-Z组成的字符串,或为空;未描述的单元格内容为空。

请按如下格式要求,将文本数据转换成 [文本型表格]:

  • 表格第一行和最后一行用字母+和字母-组成,+代表单元格的间隔,-代表一个字符的占位符;

  • 数据行:

    • 用字符|标识单元格的左右边界。

    • 某一列的宽度是该列中所有单元格最长内容长度+2(即左右各补充 1个空格),该列中内容不足该宽度的用空格补充。

    • 表格中单元格的内容要求居中对齐,对齐要求:

      1. 尽量使得文本左右两侧的空格数量相等。
      2. 如果文本左右两侧的空格数量无法相等,则左侧比右侧少一个,如图中内容为 CN 的单元格。

输入

第一行一个整数num,表示文本数据的行数,范围[1,20]。
接下来num行字符串,每行格式如line2 col3 LMN描述一个单元格:

  • line 是行的固定前缀,行数范围[1,100];
  • col 是列的固定前缀,列数范围[1,100];
  • 内容为由英文字母A-Z组成的字符串,或为空,长度范围[0,10]。

输出

字符串表示的“文本型表格”。

示例1

输入:
8
line1 col3 CN
line1 col1 A
line1 col4 D
line3 col1 X
line2 col1
line2 col2 BE
line2 col3 LMN
line2 col4

输出:
+---+----+-----+---+
| A |    | CN  | D |
|   | BE | LMN |   |
| X |    |     |   |
+---+----+-----+---+

解释:
表格的行列数:
1)输入数据最大行为3,因此行数为 3 。
2)输入数据最大列为4,因此列数为 4 。

表格的各列宽度:
·第1列:内容最长为1,加2,该列宽度为3 。
·第2列:内容最长为2,加2,该列宽度为4 。
·第3列:内容最长为3,加2,该列宽度为5 。该列中内容LMN最长,左右各补充一个空格;CN左侧补充一个空格,右侧补充两个空格。
·第4列:内容最长为1,加2,该列宽度为3 。

示例2

输入:
2
line2 col2 A
line2 col3

输出:
+--+---+--+
|  |   |  |
|  | A |  |
+--+---+--+

解释:
从输入得到数据的行列数分别为2和3;第一行、第一列、第三列即使内容为空,也需要输出。
其中第一列内容都为空,列宽度为2(该列中所有单元格最长内容长度 +2)。           

题解

题目解读

该题目要求将图片表格的文本数据转换为特定格式的文本型表格。输入数据描述了表格的内容,输出要求格式化表格,具体要求如下:

  1. 表格的边框由 +- 组成。
  2. 表格单元格的内容居中对齐,不足的部分用空格填充。
  3. 每列的宽度为该列中最长内容的长度加上左右各一个空格。

解题思路

  1. 解析输入数据,确定表格的行数和列数。
  2. 计算每列的最大宽度,便于后续格式化单元格。
  3. 构建表格的边框、行数据和空格填充,使每个单元格内容居中对齐。
  4. 按照指定格式输出表格。

Java

import java.util.*;
public class Main {
    /**
     * 打印第一行和最后一行
     * @param cols
     * @param colWidth
     */
    public static void printHeader(int cols, int[] colWidth){
        List<String> data = new ArrayList();
        for(int c=1;c<=cols;c++){
            StringBuilder s 

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

🔥笔试编程真题宝典💯 文章被收录于专栏

📕分享大厂机试真题深度剖析核心考点,助你速通面试。

全部评论

相关推荐

这是什么操作什么意思,这公司我服了...
斯派克spark:意思是有比你更便宜的牛马了
点赞 评论 收藏
分享
评论
8
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务