6. ZigZag Conversion (Medium)

https://leetcode.com/problems/zigzag-conversion/

与えられた文字列を num_rows 文字ずつ下→右上→下……とジグザグに並べて、それを一行ずつ並べて文字列で返す問題。

回答

# @param {String} s  
# @param {Integer} num_rows  
# @return {String}  
def convert(s, num_rows)  
    return s if num_rows == 1  
    a = Array.new(num_rows).map { Array.new }  
    down = false  
    i = 0  
    s.chars.each do |c|  
        a[i] << c  
        if i == 0 || i == num_rows-1  
            down = !down  
        end  
        i += down ? 1 : -1  
    end  

    a.flatten.join  
end  

ジグザグにする方向(下と上)を管理しつつ、 s を一文字ずつ2次元配列に格納する。
返すのは flatten して join した文字列。