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;
}
相关推荐
BT-BOX30 分钟前
STM32仿真proteus位带操作和keil增加头文件C文件
c语言·stm32·proteus
醉颜凉39 分钟前
【NOIP提高组】潜伏者
java·c语言·开发语言·c++·算法
Ttang232 小时前
Leetcode:118. 杨辉三角——Java数学法求解
算法·leetcode
路遇晚风3 小时前
力扣=Mysql-3322- 英超积分榜排名 III(中等)
mysql·算法·leetcode·职场和发展
木向3 小时前
leetcode104:二叉树的最大深度
算法·leetcode
一个不喜欢and不会代码的码农3 小时前
力扣113:路径总和II
算法·leetcode
向阳12183 小时前
LeetCode40:组合总和II
java·算法·leetcode
旧日之血_Hayter3 小时前
LeetCode297.二叉树的序列化和反序列化
算法·leetcode
Wils0nEdwards3 小时前
Leetcode 整数转罗马数字
linux·python·leetcode
Star Patrick3 小时前
算法训练(leetcode)二刷第二十六天 | *452. 用最少数量的箭引爆气球、435. 无重叠区间、*763. 划分字母区间
算法·leetcode·哈希算法