スポンサーリンク

【LeetCode】6. Zigzag Conversion 解答・解説【Python】

スポンサーリンク
スポンサーリンク
この記事は約3分で読めます。

 

問題

原文

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:

 

Example 1:

Example 2:

Example 3:

 

Constraints:

  • 1 <= s.length <= 1000
  • s consists of English letters (lower-case and upper-case), ',' and '.'.
  • 1 <= numRows <= 1000

 

内容

文字列 “PAYPALISHIRING “は、次のように所定の行数にジグザグに書かれています(読みやすくするために、このパターンを固定フォントで表示するとよいでしょう)。

そして、1行ずつ読みます。→"PAHNAPLSIIGYIR"

※(example1のOutputと同じ)

 

文字列を受け取り、行数を指定してこの変換を行うコードを書いてください。

 

※正しくない可能性があります。

方針

前提

・解答例を見るとnumRows=3なのに3行だったり、1行だったりで悩む。各exampleのOutputだけを見た方が良いと思う。

・ジグザグに変換するというのは、numRowsの数だけ箱を作り、その各箱に対して左→右、右→左と順に文字列s内の各文字を追加していくイメージ。

実装のイメージ

解答

解答1:

 

 

解答2:Python, 英語コメント付き

 

解答1とコードは同じ

answer = [“”]*numRowsでnumRowsの値の数だけ要素を持つリストを作成できる。

こういう基本的なPythonの動作は忘れがちだから必ず復習しておきたい。

英語コメントは実際の面接をイメージしてまずはディスカッションの内容を書き出してみた。

内容についてコメントしてもらえる人に相談したい。

この内容をさらに精緻化して、その上でスムーズに会話できる必要がある。

その後で、コードを書きながら何をしているのかを説明できるようになる必要がある。

目標は遠いけど、1つ1つクリアしていく。

 

 

補足・参考・感想

サンプルを見ても何をすれば良いのか理解できず困ってしまった。

 

 

参考

 

 

前:5. Longest Palindromic Substring

次:7. Reverse Integer

LeetCode 解答・解説記事一覧

コメント