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”.
此题的解题思路主要是理解什么是ZigZag,其次主要是如何模拟这种排列字母的,我们通过一个字符串数组来存储每一行的字符,从上到下时排列与从下到上斜排列时,均从字符串取一个字符,直到取完为止。
public class Solution {
public String convert(String s, int numRows) {
String result="";
String [] stringArray=new String[numRows];
for (int i = 0; i <numRows ; i++) {
stringArray[i]="";
}
int len=s.length();
int j=0;
while (j<len) {
int i=0;
for (; i < numRows && j<len; i++) {
stringArray[i] += s.charAt(j);
j++;
}
for (i=i-2; i >0 && j<len; i--) {
stringArray[i] += s.charAt(j);
j++;
}
}
for (int i = 0; i <numRows ; i++) {
result+=stringArray[i];
}
return result;
}
}