思路一:
用二维切片,列出变换后的结果,然后重组成新的字符串
找到规律,numRows+numRows-2 个元素的生成
也就是找到当前是垂直向下,还是斜着向上的,添加到不同的切片中,也可以用 flag 标记
func convert(s string, numRows int) string {
var slice [][]rune = make([][]rune, numRows)
//err:这里应该判断s不为空!否则
//for i := 1; i <= numRows*2-2; i++ {
for i := 1; len(s)>0; i++ {
if i>numRows*2-2{
//下标重置为1
i=1
}
var index int
if i <= numRows {
//z的垂直部分
index = i - 1
} else {
//z的拐弯部分
index = numRows - (i - numRows) - 1
}
slice[index] = append(slice[index], rune(s[0]))
s = s[1:]
}
//然后组装成结果
result := ""
for _, item := range slice {
result += string(item)
}
return result
}