一、问题描述
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 RAnd 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;
int len = s.length();
String [] rows = new String [numRows];
for (int i = 0; i < numRows; ++i)
rows[i] = "";
int size = 2 * (numRows - 1);
for(int i = 0; i < numRows; ++i)
for(int j = 0;j < len; j = j + size){
if(i + j < len)
rows[i] += s.charAt(j + i);
if(i != 0 && i != numRows - 1 && j + size - i < len)
rows[i] += s.charAt(j + size - i);
}
String result = "";
for(int i = 0;i < numRows;++i){
result += rows[i];
}
return result;
}
}