解释:
举个例子就明白了。
输入字符串是0123456789,输入nRows为4。
于是 0 6
1 5 7
2 4 8
3 9
一行一行扫,得到输出:0615724839
思路:
找准下标关系,按照每一行的下标计算公式,得到每一行的字符串,再连接起来。
举例:第一行的0和6他们在数组中的下标为0和6,可得下标推导公式:index*2*(nRows-1). index表示是第几个数(约定0是第0个数)。
class Solution {
public:
string convert(string s, int numRows) {
int n = s.length();
string result;
int index = 0;
if(numRows == 1)
return s;
while(index*2*(numRows-1) < n)
{
result+=(s[index*2*(numRows-1)]);
index++;
}
for(int i = 0; i< numRows - 2; i++)
{
index = 0;
while(i+1 + index * 2* (numRows-1) < n)
{
result+=(s[i+1 + index * 2* (numRows-1)]);
if(2*numRows -3 + index*2* (numRows-1) - i < n)
result+=(s[2*numRows -3 + index*2* (numRows-1) - i]);
index ++;
}
}
index = 0;
while(numRows - 1 + index*2*(numRows-1) < n)
{
result+=s[numRows - 1 + index*2*(numRows-1)];
index++;
}
return result;
}
};