6.M Z字形变换

Problem: 6. Z 字形变换

思路

本质上就是把字符分配给numRows个桶,最后再把桶里的字符收集起来。

在分配过程中,遇到row0或者rownumRows-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?