-
Notifications
You must be signed in to change notification settings - Fork 4
/
Copy pathsol6.cs
36 lines (33 loc) · 982 Bytes
/
sol6.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
public class Solution {
public string Convert(string s, int numRows) {
if (numRows == 1)
return s;
if (numRows >= s.Length)
return s;
var result = new char[s.Length];
var m = numRows;
var k = numRows - 2;
var maxk = k;
var sp = 0;
var delta = 0;
for (var i = 0; i < numRows; i++) {
var p = i;
result[sp++] = s[p];
while (true) {
delta = m + k;
if (delta <= 0 || p + delta >= s.Length)
break;
p += delta;
result[sp++] = s[p];
delta = (maxk - k) + (numRows - m);
if (delta <= 0 || p + delta >= s.Length)
break;
p += delta;
result[sp++] = s[p];
}
k--;
m--;
}
return new string(result, 0, sp);
}
}