6. ZigZag Conversion
阿新 • • 發佈:2017-09-28
.cn code clas logs eight sizeof sed margin 內存分配
1 char* convert(char* s, int numRows) { 2 3 if(numRows == 1) { 4 return s; 5 } 6 7 char *p = (char *) malloc (sizeof(char) * 1000); 8 char *q = s; 9 int len = 0; 10 while(*q != ‘\0‘) { 11 len++; 12 q++; 13 } 14 15 int i=0; 16int seq = 0; /* used to record current write position */ 17 int circle = 2 * numRows - 2; 18 for(i=0; i<numRows && i<len; i++) { 19 int a = i; 20 while(a<len) { 21 *(p+seq) = s[a]; 22 seq++; 23 if(0 <= a%circle && a%circle < circle/2) { 24a = (a/circle * circle + circle/2)*2 - a; 25 } else { 26 a = (a/circle + 1) * circle * 2 - a; 27 } 28 } 29 } 30 *(p+seq) = ‘\0‘; 31 return p; 32 33 }
總結:
1. 忽略了circle為0的情況
2. 內存分配不熟悉
6. ZigZag Conversion