思路
1.文字轉(zhuǎn)換有固定規(guī)則
2.在長(zhǎng)度內(nèi)有序取數(shù)
代碼
char* convert(char* s, int numRows) {
int len = 0, gap = 0, i = 0, j = 0, index = 0, next_j = 0;
char *ret_s = NULL;
if (NULL == s)
{
return NULL;
}
if (numRows < 2)
{
return s;
}
len = strlen(s);
gap = numRows*2 - 2;//1個(gè)循環(huán)體間隔Z去掉最后一橫的部分,也是每一排除掉中間部分的間隔位
/*
numRows = 3
0 4 8
1 3 5 7 9
2 6
*/
ret_s = malloc(len + 1);
memset(ret_s, 0, len);
for (i = 0; i < numRows; i++)
{
for (j = i; j < len; j += gap)
{
ret_s[index] = s[j];//間隔添加數(shù)據(jù)04815926
index++;
next_j = j + gap - i * 2;
if (i != 0 && i != (numRows - 1) && next_j < len)//去掉第1排與最后排(無(wú)特殊數(shù)據(jù))
{
ret_s[index] = s[next_j];//添加特殊數(shù)據(jù)37
index++;
}
}
}
ret_s[len] = '\0';
return ret_s;
}