【LeetCode 6. ZigZag Conversion】
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 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)
}
}