舒城网站建设,莱芜在线话题苏春媛,青岛同拓网站建设有限公司,广东建筑信息平台文章目录1. 题目2. 解题1. 题目
字符串 originalText 使用 斜向换位密码 #xff0c;经由 行数固定 为 rows 的矩阵辅助#xff0c;加密得到一个字符串 encodedText 。
originalText 先按从左上到右下的方式放置到矩阵中。
先填充蓝色单元格#xff0c;接着是红色单元格…
文章目录1. 题目2. 解题1. 题目
字符串 originalText 使用 斜向换位密码 经由 行数固定 为 rows 的矩阵辅助加密得到一个字符串 encodedText 。
originalText 先按从左上到右下的方式放置到矩阵中。
先填充蓝色单元格接着是红色单元格然后是黄色单元格以此类推直到到达 originalText 末尾。 箭头指示顺序即为单元格填充顺序。所有空单元格用 进行填充。 矩阵的列数需满足用 originalText 填充之后最右侧列 不为空 。
接着按行将字符附加到矩阵中构造 encodedText 。
先把蓝色单元格中的字符附加到 encodedText 中接着是红色单元格最后是黄色单元格。箭头指示单元格访问顺序。
例如如果 originalText cipher 且 rows 3 那么我们可以按下述方法将其编码
蓝色箭头标识 originalText 是如何放入矩阵中的红色箭头标识形成 encodedText 的顺序。在上述例子中encodedText ch ie pr 。
给你编码后的字符串 encodedText 和矩阵的行数 rows 返回源字符串 originalText 。
注意originalText 不 含任何尾随空格 。生成的测试用例满足 仅存在一个 可能的 originalText 。
示例 1
输入encodedText ch ie pr, rows 3
输出cipher
解释此示例与问题描述中的例子相同。示例 2
输入encodedText iveo eed l te olc, rows 4
输出i love leetcode
解释上图标识用于编码 originalText 的矩阵。
蓝色箭头展示如何从 encodedText 找到 originalText 。示例 3 输入encodedText coding, rows 1
输出coding
解释由于只有 1 行所以 originalText 和 encodedText 是相同的。示例 4
输入encodedText b ac, rows 2
输出 abc
解释originalText 不能含尾随空格但它可能会有一个或者多个前置空格。提示
0 encodedText.length 10^6
encodedText 仅由小写英文字母和 组成
encodedText 是对某个 不含 尾随空格的 originalText 的一个有效编码
1 rows 1000
生成的测试用例满足 仅存在一个 可能的 originalText来源力扣LeetCode 链接https://leetcode-cn.com/problems/decode-the-slanted-ciphertext 著作权归领扣网络所有。商业转载请联系官方授权非商业转载请注明出处。 2. 解题
按题意模拟即可
class Solution {
public:string decodeCiphertext(string encodedText, int rows) {int n encodedText.size(), cols n/rows;vectorvectorchar mat(rows, vectorchar(cols));for(int i 0; i n; i)mat[i/cols][i%cols] encodedText[i];string ans;for(int j 0; j cols; j){int r 0, c j;while(rrows ccols)ans mat[r][c];//45度向下遍历}while(ans.size() ans.back() )ans.pop_back();//删除尾随空格return ans;}
};112 ms 45 MB C 我的CSDN博客地址 https://michael.blog.csdn.net/
长按或扫码关注我的公众号Michael阿明一起加油、一起学习进步