JavaScript学习笔记
题目要求
将一个给定字符串根据给定的行数,以从上往下、从左到右进行 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” |
JavaScript代码
var convert = function(s, numRows) {
if (numRows == 1) {
return s;
}
let result = new Array();
for(let i = 0; i < numRows; i++) {
result[i] = new Array();
}
let rows = 0;
let cols = 0;
let i = 0;
while (i < s.length) {
if (rows == 0) {
while (rows < numRows) {
if (result[rows][cols] != undefined) {
rows++;
}
result[rows][cols] = s.charAt(i);
rows++;
i++;
}
rows--;
} else {
cols++;
rows--;
result[rows][cols] = s.charAt(i);
i++;
}
}
let resultString = "";
for (let i = 0; i < result.length; i++) {
result[i] = result[i].filter(value => value != undefined);
resultString += result[i].join("");
}
return resultString;
};
解题思路
略