C语言 | Leetcode C语言题解之第6题Z字形变换

题目:

题解:

cpp 复制代码
char * convert(char * s, int numRows){
    int n = strlen(s), r = numRows;
    if (r == 1 || r >= n) {
        return s;
    }
    int t = r * 2 - 2;
    char * ans = (char *)malloc(sizeof(char) * (n + 1));
    int pos = 0;
    for (int i = 0; i < r; ++i) { // 枚举矩阵的行
        for (int j = 0; j + i < n; j += t) { // 枚举每个周期的起始下标
            ans[pos++] = s[j + i]; // 当前周期的第一个字符
            if (0 < i && i < r - 1 && j + t - i < n) {
                ans[pos++] = s[j + t - i]; // 当前周期的第二个字符
            }
        }
    }
    ans[pos] = '\0';
    return ans;
}
相关推荐
学嵌入式的小杨同学19 分钟前
循环队列(顺序存储)完整解析与实现(数据结构专栏版)
c语言·开发语言·数据结构·c++·算法
程序员-King.19 分钟前
day128—二分查找—搜索二维矩阵(LeetCode-74)
leetcode·矩阵·二分查找
VT.馒头31 分钟前
【力扣】2627. 函数防抖
前端·javascript·算法·leetcode
凌~风31 分钟前
014-计算机操作系统实验报告之C 程序的编写!
c语言·开发语言·实验报告
想逃离铁厂的老铁31 分钟前
Day41 >> 121、买卖股票的最佳时机 + 122.买卖股票的最佳时机II + 123.买卖股票的最佳时机III
算法·leetcode
夏鹏今天学习了吗32 分钟前
【LeetCode热题100(79/100)】打家劫舍
算法·leetcode·职场和发展
iAkuya33 分钟前
(leetcode)力扣100 41二叉树的层序遍历(bfs)
windows·leetcode·宽度优先
老鼠只爱大米40 分钟前
LeetCode算法题详解 53:最大子数组和
leetcode·动态规划·分治法·最大子数组和·kadane算法·maxsubarray
小欣加油41 分钟前
leetcode 面试题17.16 按摩师
数据结构·c++·算法·leetcode·动态规划
夏鹏今天学习了吗1 小时前
【LeetCode热题100(80/100)】完全平方数
算法·leetcode·职场和发展