刚开始看完题目之后,按照列出来的形式,一直将变型之后的数组当做一个二位数组形式,所以就想着先把输入的字符串按照条件变成一个二维数组,然后再将成型的二维数组转换成字符串。但是显然这样很复杂,而且我也没有做出来。思路有错!!
百度之后,思路都是:直接用一个一维数组按照ZigZag顺序接收字符串的字符。这样就需要推算出是按照怎样的先后顺序获取字符串数组的。
对于第一行和最后一行比较简单,所取的字符之间的间隔是固定的,也就是2(numRows-1),不过需要注意的是,第一行的起始字符也就是字符串里面的第一个;而最后一行的起始字符是第numRows-1个。
对于中间行,他们之间的间隔是不固定的,也就是:numRows-2i, 2i,numRows-2i,2i,numRows-2i, 2i......(其中i是指第i行)
对于这种间隔不一定的循环,所采取的措施是:
inter=2*i;
for(j=i ; j<str.length-1;j+=inter){ inter=interval-inter;}
那如果连个字符之间的间隔是每三个重复呢?循环的时候又应该是怎么写?