leetcode-6:Z 字形变换

简介: leetcode-6:Z 字形变换

题目

题目链接

将一个给定字符串 s 根据给定的行数 numRows ,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 “PAYPALISHIRING” 行数为 3 时,排列如下:

P   A   H   N
A P L S I I G
Y   I   R

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

请你实现这个将字符串进行指定行数变换的函数:

string convert(string s, int numRows);

示例 1:

输入:s = "PAYPALISHIRING", numRows = 3
输出:"PAHNAPLSIIGYIR"

示例 2:

输入:s = "PAYPALISHIRING", numRows = 4
输出:"PINALSIGYAHRPI"
解释:
P     I    N
A   L S  I G
Y A   H R
P     I

示例 3:

输入:s = "A", numRows = 1
输出:"A"

解题

方法一:模拟

class Solution {
public:
    string convert(string s, int numRows) {
        if(numRows==1) return s;
        vector<string> rows(numRows);//numRows行字符串
        int curRow=0;
        bool goingDown=false;
        for(char c:s){
            rows[curRow]+=c;
            if(curRow==0||curRow==numRows-1){// 当前行curRow为0或numRows -1时,箭头发生反向转折
                goingDown=!goingDown;
            }
            curRow+=goingDown?1:-1;
        }
        string res;
        for(string& row:rows){// 从上到下遍历行
            res+=row;
        }
        return res;
    }          
};


相关文章
|
前端开发 JavaScript
HTML+CSS+JAVASCRIPT实现——情人节表白情书
本文主要介绍如何使用HTML三件套来实现制作一封情人节表白情书,富含情谊与爱,打动女生的心灵
1096 2
HTML+CSS+JAVASCRIPT实现——情人节表白情书
|
JavaScript Java 测试技术
基于微信小程序的在线点餐+springboot+vue.js附带文章和源代码设计说明文档ppt
基于微信小程序的在线点餐+springboot+vue.js附带文章和源代码设计说明文档ppt
143 0
|
存储 安全 算法
什么是数字签名?
【8月更文挑战第24天】
959 0
Element中树形控件在项目中的实际应用
这篇文章介绍了Element UI中树形控件的实际应用,包括使用目的、官网组件介绍、组合使用组件案例以及在项目中的具体实现方法和效果展示。
|
算法
操作系统OPT算法(最佳页面替换算法)
操作系统OPT算法(最佳页面替换算法)
389 0
|
存储 安全 数据安全/隐私保护
RAID0 RAID1 RAID10 RAID5 各需几块盘才可组建
<p><span style="font-size:14px"><br></span></p> <p><span style="font-size:14px"><strong>RAID0 RAID1 RAID10 RAID5 各需几块盘才可组建</strong><br></span></p> <p></p> <p><span style="font-size:14px"><span
4757 0
|
小程序 JavaScript API
小程序-uniapp:uni-app-base 项目基础配置及使用,开箱可用(一)
小程序-uniapp:uni-app-base 项目基础配置及使用,开箱可用(一)
544 0
|
Ubuntu Linux Docker
Docker容器运行时权限和Linux系统功能
Docker容器运行时权限和Linux系统功能 相关Docker参数 --cap-add: Add Linux capabilities --cap-drop: Drop Linux capabilities --privileged=false: Give extended privileges...
10094 0
|
Java
Java-SpringBoot-07-修改应用context-path及port
SpringBoot应用中可以配置应用上下文路径及访问的端口。 默认的情况下,SpringBoot应用的应用上下文路径为空,访问端口默认是8080。
368 0
Java-SpringBoot-07-修改应用context-path及port
|
开发框架 .NET Serverless
阿里云快速搭建个人博客
使用阿里云体验搭建博客
阿里云快速搭建个人博客