char getstr[1000];
char* convert(char* s, int numRows) {
int i, j, k = 0;
int tmp;
int num = (int)strlen(s); //记录总个数
//处理numRows=1的情况
if(numRows == 1)
{
for(i = 0; i < num; ++i)
getstr[i] = s[i];
getstr[num] = '\0';
return getstr;
}
//处理numRows>1的情况
int size = 2 * numRows - 2; //以每size个字符循环单位(观察Z型结构)
int size_num = (num%size==0) ? num/size : num/size+1; //记录循环单位个数(包含最后可能不完整的循环)
//输出首行
for(i = 0; i < size_num; ++i)
{
getstr[k++] = s[i * size];
}
//输出中间行
for(j = 1; j < numRows - 1; ++j)
{
for(i = 0; i < size_num; ++i)
{
tmp = i * size + j;
if(tmp < num) getstr[k++] = s[tmp];
tmp = i * size + size - j;
if(tmp < num) getstr[k++] = s[tmp];
}
}
//输出尾行
for(i = 0; i < size_num; ++i)
{
tmp = i * size + numRows - 1;
if(tmp < num) getstr[k++] = s[tmp];
}
//处理字符串尾识别符
getstr[num] = '\0';
//返回
return getstr;
}