# LeetCode-06 Z字形变换

C++版本

``````class Solution {
public:
string convert(string s, int numRows) {
if (numRows <= 1) return s;
string res = "";
int size = 2 * numRows - 2;
for (int i = 0; i < numRows; ++i) {
for (int j = i; j < s.size(); j += size) {
res += s[j];
int tmp = j + size - 2 * i;
if (i != 0 && i != numRows - 1 && tmp < s.size()) res += s[tmp];
}
}
return res;
}
};``````

C++版本简单易理解，我又写了C版本。

C版本

``````char* convert(char* s, int numRows) {
if(numRows<=1) return s;
char *s1 = (char *)malloc(sizeof(char) * (strlen(s) + 1));
int k = 0;
int length_cycle = 2*numRows - 2;
for(int i = 0; i < numRows; i++)
for(int j = i; j < strlen(s); j += length_cycle)
{
// strcat(s1,s+j);
//s1 += s[j];
s1[k++] = s[j];
int temp = j + length_cycle -2 * i;
if(i != 0 && i != numRows -1 && temp < strlen(s))
//strcat(s1,s+temp);
//s1 += s[temp];
s1[k++] = s[temp];
}
s1[k]=0;
return s1;
}``````

原文作者：Z字形编排问题
原文地址: https://blog.csdn.net/tingfenghanlei/article/details/84541195
本文转自网络文章，转载此文章仅为分享知识，如有侵权，请联系博主进行删除。