[LeetCode][JavaScript]ZigZag Conversion
ZigZag Conversion
The string "PAYPALISHIRING"
is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N A P L S I I G Y I RAnd then read line by line:
"PAHNAPLSIIGYIR"
Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert("PAYPALISHIRING", 3)
should return "PAHNAPLSIIGYIR"
.号称easy,我怎么感觉并不是很水...
colDirect标记是走竖的还是走斜的,根据情况调整下标。
该死的js还没有二维数组。
1 /** 2 * @param {string} s 3 * @param {number} numRows 4 * @return {string} 5 */ 6 var convert = function(s, numRows) { 7 var i, j; 8 if(numRows === 1){ 9 return s; 10 } 11 var count = 0; 12 var colDirect = true; 13 var row = 0, col = 0; 14 var map = []; 15 for(i = 0; i < s.length; i++){ 16 map[i] = []; 17 } 18 for(i = 0; i < s.length; i++){ 19 if(colDirect){ 20 map[row][col] = s[i]; 21 row++; 22 count++; 23 }else{ 24 map[row][col] = s[i]; 25 row--; 26 col++; 27 count++; 28 } 29 if(colDirect && count === numRows){ 30 count = 0; 31 row -= 2; 32 col++; 33 colDirect = false; 34 } 35 if(!colDirect && count === numRows - 2){ 36 count = 0; 37 colDirect = true; 38 } 39 } 40 var res = ""; 41 for(i = 0; i < map.length; i++){ 42 for(j = 0; j < map[i].length; j++){ 43 if(map[i][j]){ 44 res += map[i][j]; 45 } 46 } 47 } 48 return res; 49 };