leetcodeの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

出典:滞在ボタン(LeetCode)
//leetcode-cn.com/problems/zigzag-conversion:リンク:httpsの
すべてのネットワークからの控除が著作権を保有。商業転載は、ソースを明記してください許可公式、非商用の転載をご連絡ください。

 

ソリューション:

クラスソリューション{ 
    パブリック文字列の変換(文字列s、int型のnumRowsの数){ 
        IF(numRowsの数<3){ 
            リターン""。
        } 
        IF(s.length()<4){ 
            リターンS。
        } 
        StringBufferの[] SB =新しいStringBufferの[numRowsの数]。
        以下のために(; I <numRowsの数、整数iが0 = I ++){ 
            SB [I] =新規のStringBuffer()。
        } 
        ため(INT iは= 0; I <s.length(); I ++){ 
            int型NUM =%I(2 * numRowsの数-2); 
            IF(NUM <numRowsの数){ 
                SB [NUM] .append(s.charAt(I))。
            } 
            他{ 
                SB [numRowsの数-NUMの%(numRowsの数-1)-1] .append(s.charAt(I))。
            }
        } 
        ため(INT I 1 =; I <numRowsの数; I ++){ 
            SB [0] .append(SB [I])。
        } 
        戻りSB [0] .toString(); 
    } 

    パブリック静的無効メイン(文字列[] args){ 
        溶液S =新しいソリューション()。
        System.out.println(s.convert( "LEETCODEISHIRING"、3))。

    } 
}

  68.75パーセント、98パーセントのビートメモリを打つまでの時間

おすすめ

転載: www.cnblogs.com/linwenbin/p/11890696.html