找找规律——LeetCode题目6:Z字形变换
时间:2022-07-23
本文章向大家介绍找找规律——LeetCode题目6:Z字形变换,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
原题描述
+
将一个给定字符串根据给定的行数,以从上往下、从左到右进行Z字形排列,然后输出。(此处需要示例解释一下)
示例 1
输入:"LEETCODEISHIRING" ,行数为 3 时
输出:"LCIRETOESIIGEDHN"
解释:
L C I R
E T O E S I I G
E D H N
示例 2
输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:
L D R
E O E I I
E C I H N
T S G
你能看出Z字形了吗?那么现在请你实现这个转换后输出的函数吧!
原题链接:https://leetcode-cn.com/problems/zigzag-conversion
思路解析
+
可别被题目吓到了,这题的规律还挺容易找到的,我认为是一道简单题,只是你需要踏实下来在纸上打打草稿,并且认真的处理边界情况。我把按照Z字形放置时,所有行的index总结了出来,我们只需要开启row层循环,依次按照下面的index取数据即可。
复杂度分析
+
- 时间复杂度:
- 空间复杂度:
C++参考代码
+
class Solution {
public:
string convert(string s, int numRows) {
if (numRows == 1) return s;
string res;
int stride = 2 * (numRows - 1);
for (int i = 0; i < numRows; ++i) {
for (int k = 0; i + k < s.size(); k += stride) {
res += s[i + k];
if (i > 0 && i < numRows - 1 && k + stride - i < s.size()) {
res += s[k + stride - i];
}
}
}
return res;
}
};
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PWN入门(Fastbin Attack)
- Qt项目网络聊天室设计
- nginx 端口转发
- linux通用链表
- 什么情况用ArrayList or LinkedList呢?
- Dubbo系列-扬帆起航
- 使用 Horoscope 测试 TiDB 优化器
- 聊聊claudb的importRDB
- 【17期】什么情况用ArrayList or LinkedList呢?
- YOLO V3网络结构解析
- 文献笔记二十一:PhenoGram可视化染色体上的信息
- 【动手学深度学习笔记】之对模型参数的访问、初始化和共享
- 【动手学深度学习笔记】之构造MLP模型的几种方法
- 【动手学深度学习笔记】之通过丢弃法缓解过拟合问题
- 【动手学深度学习笔记】之通过权重衰减法解决过拟合问题