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;
}
相关推荐
XFF不秃头4 小时前
力扣刷题笔记-旋转图像
c++·笔记·算法·leetcode
铜豌豆_Y5 小时前
【实用】GDB调试保姆级教程|常用操作|附笔记
linux·c语言·驱动开发·笔记·嵌入式
superman超哥6 小时前
仓颉锁竞争优化深度解析
c语言·开发语言·c++·python·仓颉
yaoh.wang7 小时前
力扣(LeetCode) 111: 二叉树的最小深度 - 解法思路
python·程序人生·算法·leetcode·面试·职场和发展·深度优先
qq_401700417 小时前
const 指针:内存安全锁
c语言
superman超哥7 小时前
仓颉语言中包与模块系统的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
努力学算法的蒟蒻8 小时前
day42(12.23)——leetcode面试经典150
算法·leetcode·面试
鹿角片ljp8 小时前
力扣226.翻转二叉树-递归
数据结构·算法·leetcode
iAkuya9 小时前
(leetcode)力扣100 21搜索二维矩阵2(z型搜索)
linux·leetcode·矩阵
(●—●)橘子……9 小时前
记力扣42.接雨水 练习理解
笔记·学习·算法·leetcode·职场和发展