字符串:PAYPALISHIRING,4行展示的”Z”字形图案为
输出为:PINALSIGYAHRPI
char* convert(char* s, int numRows) {
if (numRows == 1)
return s;
int i = 0, j = 0, span, span1 = 0, span2 = 0, k = 0, sPos = 0, flag = 1;
int len = strlen(s);
char* res = (char*)malloc(sizeof(char) * (len + 1));
res[0] = '\0';
for (i = numRows; i > 0; i--) {
span1=2* (i - 1);//间距分两部分,设置标志位计算下一位置,间距为0时,因为已经访问过,直接跳过
span2=2* (numRows - 1) - span1;
flag = 1;
j = sPos;
sPos++;
while (j < len) {
if (flag == 1) {
span = span1;
flag = -1;
}
else {
span = span2;
flag = 1;
}
if (span == 0) {
continue;
}
res[k] = s[j];
k++;
res[k] = '\0';
j += span;
}
}
return res;
}