Z字形转换是指在一个二维网格上,按照从左到右、从上到下、再从右到左、从下到上的Z字形顺序,依次选取每个单元格中的数字。最后将所有的数字连接成一个新的字符串。
例如,对于下面这个网格:
[
[ '5', '1', '9', '5'],
['7', '5', '3', ''],
['2', '6', '', '8'],
['', '9', '8', '']
]
经过Z字形转换之后,得到的新字符串应该是"519575326898"。
下面是用Java实现这个功能的代码:
import java.util.ArrayList;
import java.util.List;
public class Solution {
public String convert(String s, int numRows) {
if (numRows == 1 || numRows >= s.length()) {
return s;
}
List<StringBuilder> rows = new ArrayList<>(numRows);
for (int i = 0; i < numRows; i++) {
rows.add(new StringBuilder());
}
boolean down = true;
int index = 0;
for (char c : s.toCharArray()) {
rows.get(index).append(c);
if (index == 0 || index == numRows - 1) {
down = !down;
}
index += down ? 1 : -1;
}
StringBuilder result = new StringBuilder();
for (StringBuilder row : rows) {
result.append(row.toString());
}
return result.toString();
}
}
在这段代码中,我们首先创建了一个ArrayList来存储每一行的字符。然后我们遍历输入字符串s中的每一个字符,根据当前是否向下移动,将字符添加到对应的行中。最后我们将所有的行连接起来,就得到了新的字符串。
例如,对于上面的例子,我们得到的结果应该是"519575326898"。