字符串"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。