LeetCode 6. ZigZag Conversion(Z字形变换)

该博客讨论了LeetCode的6号问题——Z字形变换。博主通过使用二维数组模拟Z字形排列,然后水平遍历获取变换后的字符串。在处理过程中,博主特别考虑了空字符串和行数为1的情况,并详细介绍了计算二维数组行列坐标的步骤,包括重复部分的计算和剩余部分的处理。最后,博主解释了如何按行水平读取非零元素来构建最终结果。

题目

在这里插入图片描述

分析

这题我采用的思路是用二维数组按照“Z”字形保存排布结果,再用水平方向遍历的方式去读取非0的部分,生成新的字符串。
基本步骤如下
1、处理特殊情况,即空字符串和行数为1的字符串。非特殊情况下就生成二维数组,下面介绍二维数组的行列坐标的计算方法。行数即numRows值。列数的部分可以拆分为几步,先求出重复部分的重复次数,(s.length()/(2numRows-2))(numRows-1),我以“向下,右上”为最小重复单元,如例一的“LEET”部分;residue部分是剩余部分,当剩余部分小于numRows时,占一列,若大于等于numRows,则由s.length()%(2*numRows-2)/numRows计算得到。

    	char[][] str;
    	if(numRows==1){
   
   
    		if(s.length()==0){
   
   
    		    return "";
    		}else{
   
   
    			return s;
    		}
    	}else{
   
   
    		int residue=0;
	    	if(s.length()%(2*numRows-2)<numRows){
   
   
	    		residue=1
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值