トピック:
所与の行に従って指定した文字列の数は、ダウンに、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パーセントのビートメモリを打つまでの時間