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;
}
相关推荐
大侠归来3 小时前
C 语言 | 在函数中操作数组
c语言·c++·算法
小师兄吃牛肉10 小时前
C语言篇:宏
c语言·开发语言
炸膛坦客11 小时前
单片机开发工具篇:(十四)配置输出 .map 文件及其本地路径
c语言·单片机·嵌入式硬件
kakakahahahaha11 小时前
Windows C盘临时文件清理:%temp%、Windows Temp、Prefetch、Windows.old与hiberfil.sys处理指南
c语言·开发语言·windows
Navigator_Z13 小时前
LeetCode //C - 1278. Palindrome Partitioning III
c语言·算法·leetcode
lvwangshu13 小时前
登录日志 题解
数据结构·线段树·题解·技巧·性质题·思维好题·细节题
殷色玫瑰14 小时前
C/C++ 内存管理详解:从内存分布到 new/delete 底层原理
java·linux·c语言·c++
C++ 老炮儿的技术栈14 小时前
main函数之后的调用
c语言·c++·人工智能·qt·mfc·c
青山木15 小时前
Hot 100 --- 编辑距离
java·数据结构·算法·leetcode·动态规划
小师兄吃牛肉16 小时前
C语言指针进阶全解析
java·c语言·算法