変換のZ字状のPHPアルゴリズム

所与の行に従って指定した文字列の数は、ダウンに、Z型配置から左。

例えば、入力文字列は、行「LEETCODEISHIRING」の数は、次のように配置され、3です。

LCIR
ETOESIIG
EDHNは、
行右に読み取りラインに左からその後、あなたは、出力を必要とするなど、新しい文字列を生成:「LCIRETOESIIGEDHN」。

あなたは、この行の文字列変換関数指定された数を実現します。

文字列変換(文字列s、INT numRowsの数 );
例1:

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

入力:S = "LEETCODEISHIRING"、numRowsの数 = 4
出力: "LDREOEIIECIHNTSG"
説明:

LDR
EOEII
ECIHN
TSG

出典:滞在ボタン(LeetCode)

答えが提示します

クラスのソリューション{

    / **
     * @param文字列$ sの
     * @param整数$ numRowsの数
     * @return文字列
     * /
    関数変換($ S、$ numRowsの数){
        $レン= strlen関数($ S)。
        IF($ LEN <= $ numRowsの数|| $ numRowsの数<= 1){
            $ sを返します。
        }

        $ strの= [];
        = 1 $ライン;
        $追加=はtrue。

        {(; iは<$がlen $ $ iは++ $ I = 0)のための

            $ strの[$ライン] [] = $ S [$ i]は、 
            
            もし($行== 1){
                $追加=はtrue。
            } ELSEIF($ライン== $ numRowsの数){
                $ =偽を追加します。
            }

            {($追加)の場合
                ++ $ライン;
            }他{
                - $ライン;
            }
        }
        $ RES = '';
        {($ M ++; $ M <$ numRowsの数$ M = 0)のための
            $ RES =破( ''、$ STR [$ M + 1])。
        }
        
        $ RESを返します。    
    }
}

おすすめ

転載: www.cnblogs.com/corvus/p/11965152.html