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;
}
相关推荐
无限进步_1 天前
【C++】只出现一次的数字 II:位运算的三种解法深度解析
数据结构·c++·ide·windows·git·算法·leetcode
网域小星球1 天前
C 语言从 0 入门(十七)|结构体指针 + 动态内存 + 文件综合实战
c语言·开发语言·文件操作·结构体指针·动态内存·综合项目
_深海凉_1 天前
LeetCode热题100-找到字符串中所有字母异位词
算法·leetcode·职场和发展
lcj25111 天前
【C语言】数据在内存中的存储
c语言·数据结构
木井巳1 天前
【递归算法】目标和
java·算法·leetcode·决策树·深度优先
旖-旎1 天前
哈希表(字母异位次分组)(5)
数据结构·c++·算法·leetcode·哈希算法·散列表
_深海凉_1 天前
LeetCode热题100-最长连续序列
算法·leetcode·职场和发展
特立独行的猫a1 天前
OpenHarmony平台移植 gifsicle:C/C++ 三方库适配实践(Lycium / tpc_c_cplusplus)
c语言·c++·harmonyos·openharmony·三方库适配·lycium
y = xⁿ1 天前
【Leet Code 】滑动窗口
java·算法·leetcode
nianniannnn1 天前
力扣104.二叉树的最大深度 110. 平衡二叉树
算法·leetcode·深度优先