所与の行に従って指定した文字列の数は、ダウンに、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を返します。
}
}