毎日1題LeetCode[初日]
3335 ワード
毎日1題LeetCode[初日]
ZigZagConversion
Description:
The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
And then read line by line: “PAHNAPLSIIGYIR” Write the code that will take a string and make this conversion given a number of rows:
convert(“PAYPALISHIRING”, 3) should return “PAHNAPLSIIGYIR”.
解題プロセス:最初はテーマ意識を理解していたとき、間違いました.のだから、問題意識を素早く理解するには、私はまだ欠けています. テーマ意識を理解した後、基本方向は2次元配列に似ていて、最初は物を垂直に下の方向に充填して、つなぎ合わせて出力して、大体の考え方はこのようにして、普通の人はすべて考えることができます.肝心なのは、具体的な細部のコードをきれいにできるかどうかです.最初はchar 2次元配列を直接開きたいと思っていましたが、このような考えはあまりにもNaive的で、効率が低く、どれだけ大きく開くかも問題でした.後で標答を見ました:Javaで書いたので、確かにきれいな感じがします.具体的なコードは以下を見て、Javaでは文字列の処理に対して、StringBuilderでできるだけStringBuilderを使うことができます(StringBufferはスレッドが安全で、これはスレッドが安全ではありませんが、効率が高いことを覚えておいてください).2次元配列は1次元のStringBuilderで代用され、具体的な内部ループはこのように見ることができ、1回のループが1回の垂直下向き充填+斜め上向き充填を完了し、文字列iの下付き文字が木を超えているかどうかを判断する判断を加える.
Javaコード:
コードの品質を高めることは:毎日美しい構想を蓄積して、良質な細部の過程です.
ZigZagConversion
Description:
The string “PAYPALISHIRING” is written in a zigzag pattern on a given number of rows like this: (you may want to display this pattern in a fixed font for better legibility)
P A H N
A P L S I I G
Y I R
And then read line by line: “PAHNAPLSIIGYIR” Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);
convert(“PAYPALISHIRING”, 3) should return “PAHNAPLSIIGYIR”.
解題プロセス:
Javaコード:
public class ZigZagConversion {
private static final String TAG=ZigZagConversion.class.getSimpleName();
public String zigZagConvet(String text,int nRows){
//change to char array --convenience to use
char [] c=text.toCharArray();
StringBuilder[] sbs=new StringBuilder[nRows];
//init sb
for(int i=0;inew StringBuilder();
int i=0,len=text.length();
while (i//vertical down
for(int id=0;id//obliquely up
for(int id=nRows-2;id>=1 && i//add all sb
for(int id=1;id0].append(sbs[id]);
}
return sbs[0].toString();
}
}
コードの品質を高めることは:毎日美しい構想を蓄積して、良質な細部の過程です.