解题思路
观察图片,可以发现问题可以转化为一维数组在二维空间的重新排列。
上下切换的方向提醒了我们使用一个变量step
标记方向。
时间复杂度O(N),;空间复杂度O(N)。
代码
func convert(s string, numRows int) string {
if numRows == 1 || len(s) <= numRows{
return s
}
mp := make([][]rune, numRows, numRows)
i := 0
step := -1
for _, char := range s{
if i == numRows-1 || i == 0{
step = -step
}
mp[i] = append(mp[i], char)
i += step
}
result := make([]rune, 0, len(s))
for j:=0;j<numRows;j++{
result = append(result, mp[j]...)
}
return string(result)
}
留言