内容:
- タイトル
- スクリプトとノート
- スクリプトロジック
トピック:
所与の行に従って指定した文字列の数は、ダウンに、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
スクリプトやメモ:[時間のかかる:56ms]
クラスソリューション: デフ変換(自己、S:STR、numRowsの数:int)を- > STR: STR1 = "" LEN1 = LEN(S) KK = 0 であれば numRowsの数== 1 : リターン(S) N1 =(numRowsの数- 1)* 2 なら numRowsの数== 2 : のための I における範囲(0、len1,2 )。 STR1 + = S [i]の ための J での範囲(1、len1,2 )。 STR1 + = S [j]と リターン(STR1) 他: 用 I における範囲(numRowsの数): J = I ながら、 J + 1 <= LEN1: STR1 + = S [J] J + = 2 *(numRowsの数- I -1 ) #J + 1 <= LEN1場合: # 0009 + = S [j]を BB = N1 - 2 *(numRowsの数- I -1 ) であれば BB == 0: もし J 1 <= LEN1: STR1 + = S [J] J + = 2 *(numRowsの数- I -1 ) のelif BB == N1: J + = n1の 他: #のプリント(BB、J) であれば、J + 1 <= LEN1: STR1 + = S [J] J + = BB リターン(STR1)
スクリプトロジック:
- このタイトルは、行数によって、以下の法律を見ることができるが、法律を見つけるために、クラスに属します:
- 1行目と2行目との間の最初の行は挟ん(numRowsの数-2)* 2 +1文字(Mセット)、次の規則の第一、第二及び第三の有無の2行目:最初の文字列sは、第二に与えられ、Mを介して、第2行目と2行目第 - 2つの文字、二行三位置と第2位置の2行目Mを介して - (M-2)の2つの文字を=。
- 包括的二行に加えて、文字間隔は、中間ライン上に存在すること
- この法律を理解した後、あなたはスクリプトを閲覧することができます