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;
}
相关推荐
青 春 记 忆4 分钟前
LeetCode 234. 回文链表|Python 解法详解
python·leetcode·链表
啊嘞嘞?2 小时前
力扣(LRU缓存)
算法·leetcode
啊嘞嘞?2 小时前
力扣(下一个排列)
算法·leetcode
多弗朗皮卡丘3 小时前
C语言梦开始的地方16:结构体
c语言·开发语言·windows
2401_862880823 小时前
Linux应用层开发 --- 多任务
linux·服务器·c语言
Forever Nore3 小时前
LeetCode 16 最接近的三数之和 - 双指针逼近
算法·leetcode·职场和发展
心仪久了会沦陷3 小时前
数据结构入门系列——顺序表详解:概念、分类与动态实现
c语言·数据结构·经验分享·笔记·开源
smj2302_796826523 小时前
解决leetcode第4033题有效K个不同元素子数组I
数据结构·python·算法·leetcode
witton3 小时前
xmake中将proto文件生成C/C++文件然后再编译链接进项目
c语言·c++·mingw·protobuf·xmake·protobuf-c·protoc-gen-c
dear_bi_MyOnly4 小时前
C语言控制语句与循环逻辑精讲
c语言·开发语言·学习·分类