6、z字形变换

将一个给定字符串根据给定的行数,以从上往下、从左到右进行 Z 字形排列。

比如输入字符串为 "LEETCODEISHIRING" 行数为 3 时,排列如下:

L   C   I   R
E T O E S I I G
E   D   H   N
之后,你的输出需要从左往右逐行读取,产生出一个新的字符串,比如:"LCIRETOESIIGEDHN"。

改良版

var convert = function(s, numRows) {
   if(numRows==1){
       return s
   } 
   const len=Math.min(s.length,numRows); 
   let down=false;
   let start=0;
   let row=[];
   for(let i=0;i

相当于我建立一个指针,这个指针指引我是向下还是向上走  

 

 

我的第一次提交,想着搞成矩阵的样子,一心只想着输出那个矩阵,忘记审题了,输出个字符串就好这样的话简单多了

var convert = function(s, numRows) {
    if(s.length>2 && numRows>1 && numRows0){
                    var cc=String(left)+'-'+String((gen+1)*le+1)
                }else if(left>numRows){
                    var cc=String(numRows-(left-numRows))+'-'+String((gen+1)*le+(left-numRows+1))
                }
                con[cc]=s[i]
            }
            let rows=Math.ceil(len/hui)*(gen+1);
            let tr=''
            if(rows>1){
                for(let i=1;i<=numRows;i++){
                    for(let j=1;j<=rows;j++){
                        let id=String(i)+'-'+String(j)
                        if(con[id]){
                            tr += con[id]
                        }
                    }
                    
                }

            }
            console.log(tr)
            return tr
    }else{
        return s
    }
   
   
};

执行用时 :4664 ms, 在所有 javascript 提交中击败了5.18%的用户

内存消耗 :95.8 MB, 在所有 javascript 提交中击败了5.16%的用户

我也太辣鸡了吧。。。仅此纪念一下

你可能感兴趣的:(6、z字形变换)