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;
}
相关推荐
Yupureki14 小时前
《算法竞赛从入门到国奖》算法基础:入门篇-贪心算法(上)
c语言·数据结构·c++·算法·贪心算法·visual studio
柏木乃一14 小时前
基础IO(上)
linux·服务器·c语言·c++·shell
独自破碎E15 小时前
【单调队列】滑动窗口的最大值
leetcode
王老师青少年编程15 小时前
2025年3月GESP真题及题解(C++八级): 上学
c++·编程·题解·真题·gesp·八级·上学
你怎么知道我是队长1 天前
C语言---头文件
c语言·开发语言
3有青年1 天前
nios ii 中 ‘ALT_CPU_FREQ‘ could not be resolved的分析和解决办法
c语言·fpga开发
June`1 天前
全排列与子集算法精解
算法·leetcode·深度优先
夏鹏今天学习了吗1 天前
【LeetCode热题100(78/100)】爬楼梯
算法·leetcode·职场和发展
圣保罗的大教堂1 天前
leetcode 712. 两个字符串的最小ASCII删除和 中等
leetcode
ALzc1 天前
深度剖析EtherCAT FOE功能:ARM固件升级的数据传输与状态机实现
c语言·stm32·ethercat·foe