iis7配置多个网站,六年级上册如何做网站,做的视频发到哪个网站,ddns怎么做网站2075. 解码斜向换位密码
字符串 originalText 使用 斜向换位密码 #xff0c;经由 行数固定 为 rows 的矩阵辅助#xff0c;加密得到一个字符串 encodedText 。
originalText 先按从左上到右下的方式放置到矩阵中。 先填充蓝色单元格#xff0c;接着是红色单元格#xff…2075. 解码斜向换位密码
字符串 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 10610^6106encodedText 仅由小写英文字母和 ’ ’ 组成encodedText 是对某个 不含 尾随空格的 originalText 的一个有效编码1 rows 1000生成的测试用例满足 仅存在一个 可能的 originalText
解题思路
模拟矩阵的遍历方法首先从矩阵的最上角开始遍历向右下方不断遍历直到超出界限一旦超出界限就将回到起始点并且以起始点右边的节点为起始点重复遍历因为originalText 不 含任何尾随空格因此我们需要对字符串末尾进行截断消除后缀的空格
代码
class Solution {
public:string decodeCiphertext(string encodedText, int rows) {if(rows1) return encodedText;int colencodedText.size()/rows;string res();int x0,y0;while (xrowsycol){int cxx,cyy;for (int i 0; cxrowscycol ; i) {resencodedText[cycx*col];cx;cy;}y;}int i res.size()-1;for (; i 0 ; --i) {if (res[i]! )break;}return res.substr(0,i1);}
};