[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   R
And 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 };

 

 
 
posted @ 2015-05-31 18:17  `Liok  阅读(597)  评论(0编辑  收藏  举报