AlgoMooc
你已开通华为OD训练营权益,还差最后一步——完成入营激活(兑换课程 + 加飞书 + 登记服务群),即可解锁全部课程与专属服务。去激活 →
← 返回题库

K0031. 矩阵行列转换

简单通过率 47% · 提交 419 · 通过 198
模拟字符串数学

小慕正在开发一个数据可视化工具,需要处理一种特殊的矩阵排列方式。这个矩阵中的所有元素都以数字字符的形式存储在一个字符串里,并且这些元素原本是按照行优先的顺序排列的——也就是先从左到右读完一整行,再换到下一行继续从左到右读取。 现在,小慕遇到了一个问题:他需要将这个矩阵转换为列优先的表达方式——也就是先从上到下读完一整列,再换到下一列继续从上到下读取。 例如,假设有一个 2×2 的矩阵,为 "1234",那么它对应的就是 "1324"。 小慕的工具接收一个字符串 `items`,表示矩阵的行优先表达。这个字符串的长度为 `n`,其中 `1 <= n <= 10000`,且仅包含数字字符 `0-9`。 请你帮助小慕编写程序,输出对应的列优先表达的字符串。如果输入的字符串长度无法构成一个正方形矩阵(即长度不是一个完全平方数),则输出 `ERROR`。

提示:带虚线的词点一下有通俗解释。

输入描述

一个字符串 `items`,表示矩阵的行优先表达。

输出描述

- 如果输入能够表示一个正方矩阵,则输出列优先表达。 - 如果无法形成正方矩阵,则输出 `ERROR`。

示例

示例 1

输入

435245019

输出

420341559

示例 2

输入

0123456789

输出

ERROR

时间限制 1000 ms · 内存限制 128 MB

看不懂题目?点开图解
行列优先转换示例 行优先输入 “435245019” 4 3 5 2 4 5 0 1 9 列优先输出 “420341559” 4 2 0 3 4 1 5 5 9 按行读:4 3 5 | 2 4 5 | 0 1 9 按列读:4 2 0 | 3 4 1 | 5 5 9 字符串长度必须为完全平方数,否则输出 ERROR 例如:长度 9 → 3×3 矩阵;长度 10 → 无法构成正方形
写完代码点「提交」,将对全部测试用例判题。

向老师提问

针对「矩阵行列转换」把疑问、代码和报错填清楚,老师收到后能更快、更准地回复你。