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)

    1. P A H N
    2. A P L S I I G
    3. 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 s, int numRows);
    

    Example 1:

    Input: s = "PAYPALISHIRING", numRows = 3
    Output: "PAHNAPLSIIGYIR"
    

    Example 2:

    Input: s = "PAYPALISHIRING", numRows = 4
    Output: "PINALSIGYAHRPI"
    

    Explanation:

    P     I    N
    A   L S  I G
    Y A   H R
    P     I
    

    翻译:

    字符串“ PAYPALISHIRING”以Z字形模式写在给定的行数上,如下所示:(您可能希望以固定字体显示此模式以提高可读性)

    P   A   H   N
    A P L S I I G
    Y   I   R
    

    然后一行一行地读取:“ PAHNAPLSIIGYIR”

    编写代码,该代码将包含一个字符串,并根据行数进行此转换:

    Kotlin代码实现

    
     fun convert(s:String,numRows: Int):String{
       if(numRows<2) return s
        val rows = arrayListOf<StringBuilder>()
        for (i in 0 until numRows) {
            rows.add(StringBuilder())
        }
    
        var i=0
        var flag=-1
        for (c :Char in s.toCharArray()){
            rows[i].append(c)
            if(i==0||i==numRows-1) flag=-flag
            i+=flag
        }
    
        val res=StringBuilder()
        for (row :StringBuilder in rows){
            res.append(row)
        }
    }
    

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