【leetcode】第6题 Z字形变换,详细题解, C++实现,#6. ZigZag Conversion

本文详细解析LeetCode第6题Z字形变换,提供两种解法:找规律和存储结果矩阵。通过观察和例子,总结出字符串在Z字形排列中的下标规律,并用C++实现转换函数。附有解法代码链接。
摘要由CSDN通过智能技术生成

这几天因为状态不太好,在这题上花了比较多的时间,记录一下。
因为题目很老了,Leetcode上关于此题的题解很多,然而很多题解解释得都不是很清楚,包括leetcode官方题解,题解中符号所表示的意思都不写明,无力吐槽,还是自己写一个当笔记吧。

题目详情

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:

之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。

请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);

示例 1:

输入: s = “LEETCODEISHIRING”, numRows = 3
输出: “LCIRETOESIIGEDHN”
示例 2:

输入: s = “LEETCODEISHIRING”, numRows = 4
输出: “LDREOEIIECIHNTSG”
解释:
在这里插入图片描述

解法一:找规律

此解法图较多,因此先讲该解法,看过解法一的图再讲解法二就更易于让人理解。

思路:
  1. 根据观察,找出 Z 字形矩阵中,每行所包含的字符在字符串s中的下标,找出下标之间的规律;
  2. 根据规律,遍历字符串 s,拼接出Z字形结果字符串。

先用几个例子将 s 的 Z 字形变换写出来,然后观察规律,下面给出两个例子:
例1:
在这里插入图片描述
例2:
在这里插入图片描述
通过观察,可以得出以下规律:
在这里插入图片描述
即:

n = n u m R o w s n = numRows n=numRows, row 表示 Z 字形结果矩阵的行号:
Z 字形结果矩阵中每一行所包含的字符的下标 i 间差值的规律为:
首尾两行: i n t e r v a l = 2 ∗ n − 2 interval = 2*n - 2 interval=2n2
中间行: i n t e r v a l = 2 ∗ n − 2 − 2 ∗ r o w interval = 2*n - 2 - 2*row interval=2n2

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值