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;
}
相关推荐
TDengine (老段)8 分钟前
TDengine C/C++ 连接器入门指南
大数据·c语言·数据库·c++·物联网·时序数据库·tdengine
菜鸟233号15 分钟前
力扣343 整数拆分 java实现
java·数据结构·算法·leetcode
茶猫_39 分钟前
C++学习记录-旧题新做-链表求和
数据结构·c++·学习·算法·leetcode·链表
源代码•宸1 小时前
Leetcode—1161. 最大层内元素和【中等】
经验分享·算法·leetcode·golang
JAY_LIN——81 小时前
C语言内存函数memcpy、memmove、menset、mencmp
c语言·开发语言
松涛和鸣1 小时前
DAY47 FrameBuffer
c语言·数据库·单片机·sqlite·html
福楠2 小时前
C++ STL | list
c语言·开发语言·数据结构·c++·算法·list
努力学算法的蒟蒻2 小时前
day55(1.6)——leetcode面试经典150
算法·leetcode·面试
myloveasuka2 小时前
int类型的取值范围(为什么负数比正数表示的范围多一位)
c语言·c++
程序员zgh2 小时前
类AI技巧 —— 文字描述+draw.io 自动生成图表
c语言·c++·ai作画·流程图·ai编程·甘特图·draw.io