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;
}
相关推荐
Hello.Reader1 小时前
Redis C语言连接教程
c语言·数据库·redis
?!7141 小时前
多线程和并发之线程
linux·c语言·c++
whoarethenext1 小时前
图像卷积OpenCV C/C++ 核心操作
c语言·c++·opencv·卷积
黑不拉几的小白兔2 小时前
第十五届蓝桥杯大赛软件赛国赛Python 大学 C 组试做【本期题单: 设置密码、栈】
c语言·python·蓝桥杯
苏荷水3 小时前
day12 leetcode-hot100-19(矩阵2)
算法·leetcode·矩阵
苏荷水3 小时前
day12 leetcode-hot100-20(矩阵3)
算法·leetcode·矩阵
全栈凯哥3 小时前
Java详解LeetCode 热题 100(21):LeetCode 240. 搜索二维矩阵 II(Search a 2D Matrix II)详解
java·算法·leetcode
guguhaohao6 小时前
编译与链接,咕咕咕
c语言
生活很暖很治愈6 小时前
《函数栈帧的创建和销毁》
c语言·数据结构·c++·编辑器
yours_Gabriel6 小时前
【力扣】面试题 01.04. 回文排列
java·数据结构·leetcode