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); // 将字符数组转换为字符串并返回
     }
 }
  
