LeetCode 6 Z 字形变换

mac2025-06-17  7

LeetCode 6 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

分析

可以用代码遍历字符串模拟z型排序,也可以去计算下标的数学规律。

C++代码

string convert(string s, int numRows) { if(s.size()<=1||numRows==1) return s; int len=s.size(),i,step=1,row=0; string *str=new string[numRows]; for(i=0;i<len;i++) { str[row]+=s[i]; if(row==0) step=1; if(row==numRows-1) step=-1; row+=step; } s.clear(); for(i=0;i<numRows;i++) s.append(str[i]); delete[] str; return s; }
最新回复(0)