解题思路

观察图片,可以发现问题可以转化为一维数组在二维空间的重新排列。
file
上下切换的方向提醒了我们使用一个变量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)
}
最后修改日期: 2022年3月1日

作者

留言

撰写回覆或留言

发布留言必须填写的电子邮件地址不会公开。