6.M Z字形变换
Problem: 6. Z 字形变换
思路
本质上就是把字符分配给numRows
个桶,最后再把桶里的字符收集起来。
在分配过程中,遇到row
为0
或者row
为numRows-1
时,需要反转row的移动方向。
特别需要注意的是,要把forward
初始值设为-1
,从而兼容处理第一个字符就要反转的情况。
Code
func convert(s string, numRows int) string {
if numRows < 2 {
return s
}
rows := make([]string, numRows)
row := 0
forward := -1
for _, ch := range s {
rows[row] = rows[row] + string(ch)
if row == 0 || row == numRows-1 {
forward = -forward
}
row += forward
}
return strings.Join(rows, "")
}
Last updated
Was this helpful?