您的位置:首页 > 其它

LeetCode 6. ZigZag Conversion(之字形)

2016-05-19 03:47 239 查看
原题网址:https://leetcode.com/problems/zigzag-conversion/

The string
"PAYPALISHIRING"
is written in a zigzag pattern on a given number of rows like
this: (you may want to display this pattern in a fixed font for better legibility)
P   A   H   N
A P L S I I G
Y   I   R

And then read line by line:
"PAHNAPLSIIGYIR"


Write the code that will take a string and make this conversion given a number of rows:
string convert(string text, int nRows);

convert("PAYPALISHIRING", 3)
should
return
"PAHNAPLSIIGYIR"
.

方法:按照目标顺序直接遍历字符串,逐行生成。



public class Solution {
public String convert(String s, int numRows) {
if (numRows <= 1) return s;
char[] sa = s.toCharArray();
char[] zz = new char[sa.length];
int zzpos = 0;
int blockSize = numRows * 2 - 2;
for(int row = 0; row < numRows; row ++) {
for(int pos = row; pos < sa.length; pos += blockSize) {
zz[zzpos++] = sa[pos];
int m = pos + (numRows - 1 - row) * 2;
if (row > 0 && row < numRows-1 && m < sa.length) zz[zzpos++] = sa[m];
}
}
return new String(zz);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: