LeetCode-Z字形变换(待优化)
LeetCode刷题笔记
LeetCode题库:https://leetcode-cn.com/problemset/all/
Z字形变换(待优化)
给定字符串s
,对其进行Z字形排列,然后横向输出一个新的字符串
思路
创建特定大小的矩阵,将字符串s
按照Z字形排列规则依次放入矩阵,最后输出矩阵内容
代码实现
var convert = function(s, numRows) {
if (numRows === 1) return s; // 行数等于1时,返回原字符串
const col = Math.ceil(Math.ceil(s.length / 4) * 2); // 获取矩阵列数
const result = [];
for (let i = 0; i < numRows; i++) {
result[i] = [];
for (let j = 0; j < col; j++) {
result[i][j] = '';
}
}
var i = 0,
j = 0,
k = 0,
add;
while (k < s.length) {
result[i][j] = s[k];
if (parseInt(j % (numRows - 1)) !== 0 || i === numRows - 1) {
j++;
}
if (i === numRows - 1) {
add = false; // 当遍历到最后一行,开始向上遍历
}
if (i === 0) {
add = true;
}
if (add) {
i++;
} else {
i--;
}
k++;
}
// 获取矩阵内容
var str = '';
for (let i = 0; i < numRows; i++) {
for (let j = 0; j < col; j++) {
if (result[i][j] !== '') str += result[i][j];
}
}
return str;
};
运行结果
执行用时 | 内存消耗 |
---|---|
272 ms | 57.5 MB |