# LeetCode第六题之Z字形变换

```P   A   H   N
A P L S I I G
Y   I   R
```

`string convert(string s, int numRows);`

```输入: s = "PAYPALISHIRING", numRows = 3

```

```输入: s = "PAYPALISHIRING", numRows = 4

P     I    N
A   L S  I G
Y A   H R
P     I ```
```R=3

P   A   H   N
A P L S I I G
Y   I   R

1   5   9     13
2 4 6 8 10 12 14
3   7   11

R=4

P     I     N
A   L S   I G
Y A   H R
P     I

1     7       13
2   6 8    12 14
3 5   9 11
4     10
```
```假设当前行数是r，总行数R，I(n)表示某行第n个字母在原字符串中的index，n从0开始：
r=1,R时，I(n+1) = I(n)+2(R-1)
1<r<R时，
I(n+1) = I(n)+2(R-r) n为偶数时，
I(n+1) = I(n)+2(r-1) n为奇数
```
`代码：`
``````if(s==null||s.length()==0||numRows==1||numRows>=s.length()) {
return s;
}
StringBuilder sb = new StringBuilder();

for(int i=1;i<s.length()+1;i+=2*(numRows-1)) {
sb.append(s.charAt(i-1));
}
for(int i=2;i<numRows;i++) {
boolean k = true;
for(int j=i;j<s.length()+1;j+=(k)?2*(numRows-i):2*(i-1),k=!k) {
sb.append(s.charAt(j-1));
}
}
for(int i=numRows;i<s.length()+1;i+=2*(numRows-1)) {
sb.append(s.charAt(i-1));
}
return sb.toString();``````

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