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;
}
相关推荐
lhbweilai1 小时前
分析FreeRTOS内核对象API的源码实现(八)
c语言·开发语言·stm32·单片机
艾络迅Acceleronix2 小时前
环境监测终端:STM32+EG800Z AT+ 艾络迅平台实战|多传感器采集联动全流程
c语言·stm32·单片机·嵌入式硬件·物联网·1024程序员节
Zwawa2 小时前
一只按键不只“按下”:短按、长按和连按如何共存
c语言·单片机·嵌入式
lvwangshu2 小时前
T3 涂鸦带师 题解
题解·贪心·倍增·技巧·思维好题·断环成链
wyhwust5 小时前
程序设计基础--C语言输入输出单元测试
c语言·开发语言
木井巳5 小时前
【动态规划: 路径问题】不同路径
java·算法·leetcode·动态规划
another heaven5 小时前
【C/C++ C++ 面向对象架构的五大特点与能力场景:封装、继承、多态、抽象与 RAII(含实战案例)】
c语言·c++·架构
晓蛋6 小时前
什么是C语言
c语言·跨平台·编程语言·高级语言·低级语言
晒太羊的猫6 小时前
hot100子串
java·算法·leetcode
海清河晏1117 小时前
加油站问题
数据结构·算法·leetcode