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;
}
相关推荐
xxwxx__5 分钟前
栈(Stack)详解:概念、实现与避坑指南
c语言·数据结构
草莓熊Lotso15 分钟前
【Linux网络】深入理解 HTTP 协议(四):完善 C++ HTTP 服务器:从协议原理到生产级实现
linux·运维·服务器·c语言·网络·c++·http
cpp_250122 分钟前
P11375 [GESP202412 六级] 树上游走
数据结构·c++·算法·题解·洛谷·树形结构·gesp六级
天才程序YUAN22 分钟前
Windows 11 C 盘扩容完整教程:恢复分区拦路、页面文件锁盘、WinRE 重建全记录
c语言·开发语言·windows
0x3F(小茶)23 分钟前
STM32 Bootloader与OTA升级
c语言·stm32·单片机·嵌入式硬件·物联网
我是一颗柠檬24 分钟前
C语言最全面复习:从入门到精通(2026年)
c语言·开发语言
Luminous.28 分钟前
C语言--day26
c语言·开发语言
luj_176830 分钟前
硝酸体系核关联假说解析
服务器·c语言·开发语言·经验分享·算法
fengxin_rou1 小时前
LeetCode 三道高频中等数组算法详解|除自身乘积、矩阵置零、螺旋矩阵
算法·leetcode·矩阵
8Qi810 小时前
LeetCode 75:颜色分类(荷兰国旗问题)—— Java 题解 ✅
java·算法·leetcode·指针·排序