6. ZigZag Conversion
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了6. ZigZag Conversion相关的知识,希望对你有一定的参考价值。
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; 16 int 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) { 24 a = (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的主要内容,如果未能解决你的问题,请参考以下文章