题目:
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"
.
中文意思:
之字形的输出,这道题目有点规律可循,就是先设置n个字段的数组,来存放这些个字符串,然后每一行的输入,也用来模拟这种循环.只是每次当循环到第一行和第numRow时,就要考虑转换方向了.具体上代码:
public static String convert(String s,int numRow)
{
int row = 0;
int delta = 1;
System.out.println(s.length());
String str[] = new String[s.length()];
System.out.println(str[1]);
Arrays.fill(str,""); //预先填充这个字符串数组,否则的话,默认里面就是null的值
//String string = new String();
//if(s.length() == 0 || numRow == 0)
// return s;
//else
{
for(int i = 0; i < s.length(); i++)
{
str[row] = str[row] + s.charAt(i);
row = row + delta;
if(row >= numRow)
{
row = numRow - 2;
delta = -1;
}
else if(row < 0)
{
row = 1;
delta = 1;
}
}
}
String string = "";
for(int j = 0; j < s.length(); j++)
{
//System.out.println(str[j]);
string = string + str[j];
}
return string;
}