Leetcode_06 [Z字型変換] - [難易度:穏健派]

内容:

  • タイトル
  • スクリプトとノート
  • スクリプトロジック

トピック:

所与の行に従って指定した文字列の数は、ダウンに、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. このタイトルは、行数によって、以下の法律を見ることができるが、法律を見つけるために、クラスに属します:
    1. 1行目と2行目との間の最初の行は挟ん(numRowsの数-2)* 2 +1文字(Mセット)、次の規則の第一、第二及び第三の有無の2行目:最初の文字列sは、第二に与えられ、Mを介して、第2行目と2行目第 - 2つの文字、二行三位置と第2位置の2行目Mを介して - (M-2)の2つの文字を=。 
  2. 包括的二行に加えて、文字間隔は、中間ライン上に存在すること
  3. この法律を理解した後、あなたはスクリプトを閲覧することができます

おすすめ

転載: www.cnblogs.com/mailong/p/12227357.html