Z字符变换

本文深入探讨了一种特殊的字符串转换算法——Z字形变换,该算法将输入字符串以Z字形路径分布在指定行数的矩阵中,再按行读取形成新的字符串。文章详细解释了算法的工作原理,包括如何在不同方向上更新字符串的位置,并提供了具体的执行实例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

维护一个长度为numRows的数组

/**
 * @param {string} s
 * @param {number} numRows
 * @return {string}
 */
var convert = function(s, numRows) {
    if(numRows == 1)
        return s;

    const len = Math.min(s.length, numRows);
    const rows = [];
    for(let i = 0; i< len; i++) rows[i] = "";
    let loc = 0;
    let down = false;

    for(const c of s) {
        rows[loc] += c;
        if(loc == 0 || loc == numRows - 1)
            down = !down;
        loc += down ? 1 : -1;
    }

    let ans = "";
    for(const row of rows) {
        ans += row;
    }
    return ans;
};

输入:
LEETCODEISHIRING
规则:

	L   C   I   R
	E T O E S I I G
	E   D   H   N

输出:
LCIRETOESIIGEDHN

结果得到的是
[‘LCIR’,‘ETOESIIG’,‘EDHN’]

也就是,向下的话就按次序把当前的字符加在第i个字符串后面
向右就倒着加

执行过程-LEETCODEISHIRING

L                    L
L,E                  E
L,E,E                E
L,ET,E               T
LC,ET,E              C
LC,ETO,E             O
LC,ETO,ED            D
LC,ETOE,ED           E
LCI,ETOE,ED          I
........
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值