アルゴリズムの問題を-Z型変換

説明

所与の行に従って指定した文字列の数は、ダウンに、Z型配置から左。
例えば、入力された文字列は次のように三列「LEETCODEISHIRING」が配置されている:
L C I R&LT
E T O E S I I G
E D H N
「LCIRETOESIIGEDHN」:あなたの出力線で左から右に、リード線に必要後、などの新しい文字列を生成します。
:あなたは、この文字列変換関数は行数を指定し実現します
。(S文字列、int型のnumRowsの数)の文字列変換を

例1

入力:S = "LEETCODEISHIRING"、numRowsの数 = 3
出力: "LCIRETOESIIGEDHN"

例2

入力:S = "LEETCODEISHIRING"、numRowsの数 = 4
出力: "LDREOEIIECIHNTSG"
説明:
LT L D R&
E OE I I
I C H N E
T G S

答え

var convert = function(s, numRows) {
    let arr = []
    let j = 0
    for(let i = 0; i < numRows; i++){
        arr[i] = ''
    }
    for(let n of s){
        j = j >= 2 * (numRows - 1) ? (j - 2 * (numRows - 1)) : j
        let k = j > (numRows - 1) ? 2 * (numRows - 1) - j : j
        arr[k] += n
        j++
    }
    return numRows === 1 ? s : arr.join('')
};

分析

時間計算量:O(n)は、空間的複雑:O(N)

おすすめ

転載: www.cnblogs.com/zhoulixiangblog/p/12057359.html