概述
[Leetcode]Z字形变换
Leetcode-Z字形变换
题目描述
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。
比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:
L
C
I
R
E T O E S I I G
E
D
H
N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。
请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"
示例 2:
输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
解释:
L
D
R
E
O E
I I
E C
I H
N
T
S
G
解题思路
- 字符串 s 按照给定行数 nunRows 进行 Z 字形排列,容易发现,遍历 s 时每个字符在 Z 字形中的 行索引 ,先从 0 增大到 numRows-1 ,再从 numRows-1 减小到 0,如此反复。
- 定义 numsRows 个数组,分别记录每一行的字符,最后的结果就是这 numsRows 个数组的组合。
实现代码
class Solution {
public:
string convert(string s, int numRows) {
int len=s.length();
string ans;
if(len<1)return ans;
if(numRows<2)return s;
vector<string>res(numRows);
int row=0;
int flag=-1;
for(int i=0;i<len;i++){
res[row]+=s[i];
if(row==0||row==numRows-1) //到达Z字形转折点时反向
flag=-flag;
row+=flag;
}
for(int i=0;i<numRows;i++)
ans+=res[i];
return ans;
}
};
最后
以上就是大胆黄豆为你收集整理的[Leetcode]Z字形变换的全部内容,希望文章能够帮你解决[Leetcode]Z字形变换所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复