class Solution {
public String convert(String s, int numRows) {
int length = s.length(); // 获取字符串的长度
char[] arr = s.toCharArray(); // 将字符串转换为字符数组
char[] res = new char[length]; // 创建一个与原字符串长度相同的字符数组,用于存放结果
if(numRows == 1 || numRows > length) { // 如果行数为1或者大于字符串长度,直接返回原字符串
return s;
}
// 初始化变量
int index = 0; // 结果数组的索引
int left = numRows * 2 - 2; // 当前行的左侧间隔
int right = 0; // 当前行的右侧间隔
// 遍历每一行
for (int i = 0; i < numRows; i++, left -= 2, right += 2) {
res[index++] = arr[i]; // 将当前行的首字符放入结果数组
// 遍历当前行的字符
for (int j = i; j < length;) {
j += left; // 计算下一个字符的位置
if (left != 0 && j < length) { // 如果位置合法,将字符放入结果数组
res[index++] = arr[j];
}
j += right; // 计算下一个字符的位置
if (right != 0 && j < length) { // 如果位置合法,将字符放入结果数组
res[index++] = arr[j];
}
}
}
return String.valueOf(res); // 将字符数组转换为字符串并返回
}
}