LeetCode


题目:
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".

思路:

我是通过找规律找到每一行应该取哪个字符。

package string;

public class ZigZagConversion {

public String convert(String s, int numRows) {
if (s == null || numRows == 1) return s;
int gap = 2 * (numRows - 1);
int len = s.length();
StringBuilder sb
= new StringBuilder("");

for (int i = 0; i < numRows; ++i) {
for (int j = i; j < len; j += gap) {
sb.append(s.charAt(j));
int next = j + 2 * (numRows - i - 1);
if (i != 0 && i != numRows - 1 && next < len)
sb.append(s.charAt(next));
}
}

return sb.toString();
}

public static void main(String[] args) {
// TODO Auto-generated method stub
String s = "A";
ZigZagConversion z
= new ZigZagConversion();
System.out.println(z.convert(s,
1));
}

}

 

本站声明
本文转载自:http://www.cnblogs.com/shuaiwhu/p/5032680.html     作者:ZigZag Conversion - NULL00     发布日期:2015/12/09     本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系我们删除。


 
© 2014-2017 ITdaan.com 粤ICP备14056181号