LeetCode 2075. 解码斜向换位密码(模拟)

文章目录

    • 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;vector<vector<char>> mat(rows, vector<char>(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(r<rows && c<cols)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阿明),一起加油、一起学习进步!
Michael阿明

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/471505.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php 无法加载css文件,解决ThinkPHP样式无法加载问题(CSS,JS),

解决ThinkPHP样式无法加载问题(CSS,JS)解决了ThinkPHP风格无法加载的问题(CSS&#xff0c;JS)&#xff0c;以下是thinkphp框架教程栏目&#xff0c;对ThinkPHP风格无法加载(CSS&#xff0c;JS)问题的解决方案&#xff0c;希望对有需要的人有所帮助&#xff01;1.项目入口文件in…

UI设计培训中所需要的手绘能力

一、漫画 主要不是绘画能力&#xff0c;更重分镜头&#xff0c;叙事能力&#xff0c;脚本编写能力&#xff0c;很多画的不好&#xff0c;但依然存活很多年的漫画还真不少&#xff0c;甚至可以证明&#xff0c;绘画能力的底线可以很低。 二、游戏原画 虽然工作内容是画画&#x…

LeetCode 2076. 处理含限制条件的好友请求(并查集)

文章目录1. 题目2. 解题1. 题目 给你一个整数 n &#xff0c;表示网络上的用户数目。每个用户按从 0 到 n - 1 进行编号。 给你一个下标从 0 开始的二维整数数组 restrictions &#xff0c;其中 restrictions[i] [xi, yi] 意味着用户 xi 和用户 yi 不能 成为 朋友 &#xff…

LeetCode 2078. 两栋颜色不同且距离最远的房子

文章目录1. 题目2. 解题1. 题目 街上有 n 栋房子整齐地排成一列&#xff0c;每栋房子都粉刷上了漂亮的颜色。给你一个下标从 0 开始且长度为 n 的整数数组 colors &#xff0c;其中 colors[i] 表示第 i 栋房子的颜色。 返回 两栋 颜色 不同 房子之间的 最大 距离。 第 i 栋房…

LeetCode 2079. 给植物浇水(前缀和)

文章目录1. 题目2. 解题1. 题目 你打算用一个水罐给花园里的 n 株植物浇水。 植物排成一行&#xff0c;从左到右进行标记&#xff0c;编号从 0 到 n - 1 。其中&#xff0c;第 i 株植物的位置是 x i 。x -1 处有一条河&#xff0c;你可以在那里重新灌满你的水罐。 每一株植…

LeetCode 2080. 区间内查询数字的频率(哈希+二分查找)

文章目录1. 题目2. 解题2.1 超时解2.2 优化1. 题目 请你设计一个数据结构&#xff0c;它能求出给定子数组内一个给定值的 频率 。 子数组中一个值的 频率 指的是这个子数组中这个值的出现次数。 请你实现 RangeFreqQuery 类&#xff1a; RangeFreqQuery(int[] arr) 用下标从…

java里的super杀意思,java中Super到底是什么意思?必须举例说明!

马克-to-win&#xff0c;Super是一个参考(或说指针)指向他紧邻的父类(见下面的例子)。Super is a reference of its neighbour superclassSo Use super to call superclass’s constructor用super可以指向被隐藏的父类的同名成员。Use super to call superclass’s members tha…

C#中的多文档的使用

1.首先&#xff0c;新建一个窗体&#xff0c;设置窗体的IsMdiContainer true; 窗体的大小为700*600 长700 高600 2.在窗体的Load事件中添加如下代码 private void FormMain_Load(object sender, EventArgs e){Form form new Form();form.FormBorderStyle FormBorderStyle.…

LeetCode 1901. 找出顶峰元素 II(二分查找)

文章目录1. 题目2. 解题1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上、下、左、右)的元素。 给你一个 从 0 开始编号 的 m x n 矩阵 mat &#xff0c;其中任意两个相邻格子的值都 不相同 。找出 任意一个 顶峰元素 mat[i][j] 并 返回其位置 [i,j] 。 …

LeetCode 2085. 统计出现过一次的公共字符串(哈希)

文章目录1. 题目2. 解题1. 题目 给你两个字符串数组 words1 和 words2 &#xff0c;请你返回在两个字符串数组中 都恰好出现一次 的字符串的数目。 示例 1&#xff1a; 输入&#xff1a;words1 ["leetcode","is","amazing","as",&q…

php表白页面,2020情人节表白页面(代码分享)

趁此单身汪伤心之日&#xff0c;作为一名前端程序猿的我也按捺不住了&#xff0c;撸个表白页面送给广大想表白的人儿。话不多说&#xff0c;先看效果(网页地址)&#xff1a;功能一个网页输入名称&#xff0c;生成带参数的网址。浏览器输入该网址&#xff0c;即可打开带有该名字…

LeetCode 2086. 从房屋收集雨水需要的最少水桶数(贪心)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的字符串 street 。street 中每个字符要么是表示房屋的 ‘H’ &#xff0c;要么是表示空位的 ‘.’ 。 你可以在 空位 放置水桶&#xff0c;从相邻的房屋收集雨水。 位置在 i - 1 或者 i 1 的水桶可以收集位置为 i 处房…

LeetCode 2087. 网格图中机器人回家的最小代价(脑筋急转弯)

文章目录1. 题目2. 解题1. 题目 给你一个 m x n 的网格图&#xff0c;其中 (0, 0) 是最左上角的格子&#xff0c;(m - 1, n - 1) 是最右下角的格子。 给你一个整数数组 startPos &#xff0c;startPos [startrow, startcol] 表示 初始 有一个 机器人 在格子 (startrow, start…

PAM+4+matlab,基于PAM4调制的400G光模块

PAM4是400G光模块的主要调制方式&#xff0c;有多模和单模两种类型。基于PAM4调制的400G光模块电口侧以8x50G PAM4调制&#xff0c;光口侧则有8x50G PAM4和4x100G PAM4两种调制类型。多模光模块400G多模光模块常见的有SR8和SR4.2接口&#xff0c;皆使用8x50G PAM4调制。400G SR…

LeetCode 2089. 找出数组排序后的目标下标

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的整数数组 nums 以及一个目标元素 target 。 目标下标 是一个满足 nums[i] target 的下标 i 。 将 nums 按 非递减 顺序排序后&#xff0c;返回由 nums 中目标下标组成的列表。 如果不存在目标下标&#xff0c;返回一…

DJANGO,获取当前用户名,用户组名,用户组权限

样例&#xff0c;为下一步自定义用户权限作一下代码准备&#xff1a; def get_context_data(self, **kwargs):if self.request.user.is_authenticated():current_user_set self.request.userprint current_user_setcurrent_group_set Group.objects.get(usercurrent_user_set…

php 获取js对象的属性值,js获取对象,数组所有属性键值(key)和对应值(value)的方法示例...

本文实例讲述了js获取对象,数组所有属性键值(key)和对应值(value)的方法。分享给大家供大家参考&#xff0c;具体如下&#xff1a;var valuesfunction(object) {var values [];for (var property in object)values.push(object[property]);return values;}//写成标准的方法(数…

LeetCode 2090. 半径为 k 的子数组平均值(滑窗)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的数组 nums &#xff0c;数组中有 n 个整数&#xff0c;另给你一个整数 k 。 半径为 k 的子数组平均值 是指&#xff1a;nums 中一个以下标 i 为 中心 且 半径 为 k 的子数组中所有元素的平均值&#xff0c;即下标在 i …

大龄屌丝自学笔记--Java零基础到菜鸟--036

GUI&#xff1a;继承体系、事件监听机制、适配器模型、Netbeans 1、继承体系 2、事件监听机制 事件源--事件定义&#xff08;接口&#xff09;--事件处理&#xff08;实现类&#xff09;--事件监听 3、适配器模型 接口&#xff08;很多方法&#xff09;--抽象适配器类&#xff…

LeetCode 2091. 从数组中移除最大值和最小值(一次遍历)

文章目录1. 题目2. 解题1. 题目 给你一个下标从 0 开始的数组 nums &#xff0c;数组由若干 互不相同 的整数组成。 nums 中有一个值最小的元素和一个值最大的元素。分别称为 最小值 和 最大值 。你的目标是从数组中移除这两个元素。 一次 删除 操作定义为从数组的 前面 移除…