力扣6.Z字形变换

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

你可能感兴趣的:(算法与数据结构进阶(java),java,算法,leetcode)