Leetcode6. Z 字形变换

简洁易懂讲清原理,讲不清你来打我~

输入字符串,按下右上下右上排列后输出字符串
在这里插入图片描述

在这里插入图片描述

模拟

简单的思路
利用字符串数组模拟Z字形,从左到右遍历按下=》右上=》下=》右上填充字符串数组,最后按行输出Z字形字符串数组

精准的定义
Z是要填充的字符串数组
i是要填充的字符下标s
down是向下标志
row是字符要填充在哪一行
ans是按行输出Z的结果

class Solution {
public:
    string convert(string s, int numRows) {

        if(numRows==1)return s;
        vector<string>Z(min(numRows,(int)s.size()));//Z是要填充的字符串数组
        bool down =true;//down是向下标志
        int row=0;//row是字符要填充在哪一行
        string ans;//ans是按行输出Z的结果

        for(int i=0;i<s.size();i++){
            //i是要填充的字符的下标
            Z[row]+=s[i];
            //边界
            if(row==numRows-1&&down||row==0&&!down){
                down=!down;
            }
            row+=down?1:-1;
        }
        //按行输出Z的结果
        for(auto a:Z){
            ans+=a;
        }
        return ans;
    }
};

踩过的坑

if(numRows==1)return s;

min(numRows,(int)s.size())

喜欢简洁易懂还能讲清楚原理博客的小伙伴就关注关注这个非常高产的博主呀,下次再会~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值