Leetcode第六题(Z 字形变换)

简介: 这篇文章介绍了LeetCode第六题“Z字形变换”的解法,提供了C++的代码实现,其中使用了向量数组来模拟Z字形排列,并详细解释了算法的逻辑。

题目描述:

简单的说就是将字符串的每一个字符按照Z字排列之后将每一行字符连接在一起输出

class Solution {
public:
    string convert(string s, int numRows) {
        //numRows == 1 直接返回原字符串
        if(numRows == 1) return s;
        //准备一个rows字符串数组存储字符
        vector<string> rows(numRows);
        //创建一个方向变量
        bool down = false;
        //遍历字符串
        for(int i = 0,row = 0;i < s.length();i++){
            rows[row] += s[i];
            if(row == 0 || row == numRows - 1)
                down = !down;
            row += down ? 1 : -1;
        }

        string ans = "";
        for(int i = 0; i < numRows; i++) 
            ans += rows[i];

        return ans;
    }
};

numRows的值为1时,直接返回原字符串即可, 当numRows的值 >= 2 时, 创建一个存放numsRows行字符串的字符串数组。循环遍历整个字符串,row为一个游标,控制当前字符应该放到数组的哪一个位置。同时还有一个方向变量down用来控制row的方向。当row == 0时,此时down = truerow游标应如下图所示向下走,反之row向上走,然后将字符串数组的元素连接在一起返回即可。

相关文章
|
5月前
|
算法
LeetCode算法题---最长回文子串、N 字形变换(四)
LeetCode算法题---最长回文子串、N 字形变换(四)
38 0
|
存储
LeetCode6-Z字形变换
LeetCode6-Z字形变换
|
2月前
|
算法
LeetCode第6题N 字形变换
该文章介绍了 LeetCode 第 6 题 N 字形变换的解法,通过按列生成的方式,根据行数转换逻辑来构造字符串,主要注意控制行数的转换时机,从而实现 N 字形变换。
LeetCode第6题N 字形变换
|
2月前
|
Python
python实现:旋转矩阵转换为四元数
python实现:旋转矩阵转换为四元数
45 0
|
4月前
|
算法 索引 Perl
力扣经典150题第二十二题:Z 字形变换
力扣经典150题第二十二题:Z 字形变换
30 1
|
4月前
|
Perl
6.Z 字型变换
6.Z 字型变换
|
5月前
|
索引
leetcode代码记录(Z 字形变换
leetcode代码记录(Z 字形变换
37 1
|
5月前
leetcode-6:Z 字形变换
leetcode-6:Z 字形变换
40 0
|
5月前
|
C++
字形变换(C++)
字形变换(C++)
32 0