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;
}
相关推荐
阿昭L1 分钟前
leetcode链表相交
算法·leetcode·链表
李绍熹30 分钟前
c语言字符串操作示例
c语言
Damon_X40 分钟前
extern “C“
c语言
GoWjw2 小时前
在C&C++指针的惯用方法
c语言·开发语言·c++
小南家的青蛙2 小时前
LeetCode第1261题 - 在受污染的二叉树中查找元素
算法·leetcode·职场和发展
Coding Peasant2 小时前
GD32E230 I2C从机功能深度解析与实现指南
c语言·stm32·单片机·mcu·arm
superman超哥2 小时前
仓颉语言中错误恢复策略的深度剖析与工程实践
c语言·开发语言·c++·python·仓颉
玖剹2 小时前
记忆化搜索题目(二)
c语言·c++·算法·leetcode·深度优先·剪枝·深度优先遍历
搬砖的kk3 小时前
Lycium++ - OpenHarmony PC C/C++ 增强编译框架
c语言·开发语言·c++
Jul1en_3 小时前
【算法】分治-归并类题目
java·算法·leetcode·排序算法