题目描述
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
解题思路
根据题目的意思,得到创建一个字符串数组,数组大小为numRows。 之后遍历字符串,将每一个字符加到数组中的一个字符串的末尾。
代码如下
func convert(s string, numRows int) string {
if numRows == 1 {
return s
}
var str []string
for i := 0; i < numRows; i++ {
str = append(str, "")
}
n := 0
flag := 1
for i := 0; i < len(s); i++ {
str[n] += fmt.Sprintf("%c", s[i])
if n + flag >= numRows {
flag = -1
} else if n + flag < 0 {
flag = 1
}
n += flag
}
var ret string
for i := 0; i < numRows; i++ {
ret += str[i]
}
return ret
}
网友评论