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 分钟前
2026年华数杯C 题 超详细解题思路
c语言·开发语言·人工智能
鹿角片ljp38 分钟前
LeetCode 53. 最大子数组和
算法·leetcode·职场和发展
mifengxing10 小时前
LeetCode 41.缺失的第一个正数|Hard题O(n)+O(1)最优解法深度解析
java·算法·leetcode·排序算法
hanlin0315 小时前
动态规划专练:力扣第121、122题
笔记·算法·leetcode
To_OC15 小时前
LC 74 搜索二维矩阵:换皮的二分查找,我居然一开始没看出来
javascript·算法·leetcode
玖玥拾15 小时前
LeetCode 189 轮转数组
算法·leetcode
用户昵称10016 小时前
C/C++编程-工程实践-本地存储log的工程意义
c语言·开发语言
Tisfy18 小时前
LeetCode 3345.最小可整除数位乘积 I:暴力枚举(从n开始尝试)
数学·算法·leetcode·题解·枚举
青山木19 小时前
Hot 100 --- 在排序数组中查找元素的第一个和最后一个位置
java·数据结构·算法·leetcode
老师我太想进步了202620 小时前
C语言版讲解函数递归
c语言·开发语言