-
Notifications
You must be signed in to change notification settings - Fork 0
/
6-ZigZagConversion.js
53 lines (45 loc) · 1.37 KB
/
6-ZigZagConversion.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
var convert = function (s, numRows) {
let convertTo2DArray = function (s, numRows) {
let populateDown = function (arr, result) {
for (let i = 0; i < numRows; i++) {
if (!arr[0]) {
break;
}
result[i].push(arr[0]);
arr.shift();
}
};
let populateDiagonal = function (arr, result) {
for (let i = numRows - 2; i > 0; i--) {
if (!arr[0]) {
break;
}
result[i].push(arr[0]);
arr.shift();
}
};
let arr = s.split("");
let result = [];
for (i = 0; i < numRows; i++) {
result.push([]);
}
while (arr.length > 0) {
populateDown(arr, result);
populateDiagonal(arr, result, numRows);
}
return result;
};
let convert2DArrayToAnswer = function (arr) {
let concatArray = [];
for (let i = 0; i < arr.length; i++) {
concatArray = concatArray.concat(arr[i]);
}
let result = "";
for (let i = 0; i < concatArray.length; i++) {
result += concatArray[i];
}
return result;
};
return convert2DArrayToAnswer(convertTo2DArray(s, numRows));
};
console.log(convert("PAYPALISHIRING", 4));