6.ZigZag Conversion--之字形转换

字符串"PAYPALISHIRING"是下面三行字符以之字形的形式给出的,它们按照每行读是"PAHNAPLSIIGYIR",

P         A          H          N
A    P    L    S     I     I    G
Y         I          R

问题是给定一个按照之字形读的字符串,输出其按照每行读的字符串。
分析:
已经知道的参数是给定的行的数目:nRows, 例如当nRows = 4时,之字形排列方式应该如下所示

0      6        12        18
1    5 7     11 13     17 19 
2  4   8  10    14  16    20
3      9        15        21

从上面的排列方式可以看出,nRows为4时的步长step为6(0-1-2-3-4-5,6-7-8-9-10-11,…),距离step = (2*nRows - 2),减去2是因为第一行和最后一行是之字形的开头和结尾,其右边没有之字形元素。之字形元素在每一列中只有一个(4,5,10,11,16,17)例如在第二行元素为1 5 7 11 13…1和5之间的距离step1=(nRows - 1 - 1)*2 = 4。而5和7之间的距离则为step - step1 = 2。可知当第i行的右侧含有之字形元素时,之字形元素和左边的距离step1 =(nRows - 1 - i)*2,与右边元素的距离为step - step2。


                
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值