将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。 比如输入字符串为 “LEETCODEISHIRING” 行数为 3 时,排列如下:
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:“LCIRETOESIIGEDHN”。请你实现这个将字符串进行指定行数变换的函数:
string convert(string s, int numRows);
示例 1:
输入: s = "LEETCODEISHIRING", numRows = 3
输出: "LCIRETOESIIGEDHN"
示例 2:
输入: s = "LEETCODEISHIRING", numRows = 4
输出: "LDREOEIIECIHNTSG"
#include<bits/stdc++.h>
using namespace std;
void convert(string s, int numRows) {
if(numRows==1) {
cout<<s<<endl;
} else {
int n=numRows*2-2;
for(int l=0; l<numRows; l++) {
for(int i=0; i<s.size(); i++) {
if(i%n==l||i%n==n-l) {
cout<<s[i];
}
}
}
}
}
int main() {
string s;
int numRows;
cin>>s;
cin>>numRows;
convert(s,numRows);
}