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;
}
相关推荐
Gomiko3 小时前
C/C++基础(五):分支
c语言·c++
Yeats_Liao4 小时前
CANN Samples(十三):Ascend C 算子开发入门
c语言·开发语言
鹿角片ljp6 小时前
力扣140.快慢指针法求解链表倒数第K个节点
算法·leetcode·链表
im_AMBER7 小时前
Leetcode 72 数组列表中的最大距离
c++·笔记·学习·算法·leetcode
曾几何时`7 小时前
归并排序(一)
数据结构·算法·leetcode
Dream it possible!8 小时前
LeetCode 面试经典 150_图的广度优先搜索_最小基因变化(93_433_C++_中等)(广度优先搜索(BFS))
c++·leetcode·面试·广度优先
佳航张8 小时前
C语言经典100题---例003--- 完全平方数
c语言
Hominid⁺9 小时前
深度解析:C 语言的 8 个翻译阶段与 GCC 编译全流程
c语言·开发语言
CoderYanger9 小时前
动态规划算法-两个数组的dp(含字符串数组):42.不相交的线
java·算法·leetcode·动态规划·1024程序员节