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;
}
相关推荐
冬夜戏雪19 小时前
单词拆分/分割等和子集
算法·leetcode·职场和发展
追随者永远是胜利者19 小时前
(LeetCode-Hot100)21. 合并两个有序链表
java·算法·leetcode·链表·go
追随者永远是胜利者19 小时前
(LeetCode-Hot100)72. 编辑距离
java·算法·leetcode·职场和发展·go
硬汉嵌入式19 小时前
斯坦福大学计算机科学早期发布的简明C语言教程《Essential C》
c语言·开发语言
聆风吟º19 小时前
【C标准库】理解C语言中的abs函数:计算整数的绝对值
c语言·abs·库函数·绝对值
jyhappy12319 小时前
深入理解 STM32 的 GPIO — 从零开始点亮第一颗 LED
c语言·stm32·单片机·嵌入式硬件·mcu
锅包一切20 小时前
PART2 双指针
c++·算法·leetcode·力扣·双指针
m0_5312371720 小时前
C语言-if/else,switch/case
c语言·数据结构·算法
Hag_2020 小时前
LeetCode Hot100 239.滑动窗口最大值
数据结构·算法·leetcode
夏乌_Wx20 小时前
从零开始实现一个自己的 Shell:mybash 项目实战
linux·c语言·后端