C解法

本代码实现了将输入的字符串按照 "之"字形排列 的功能,并将每一行内容输出。之字形排列的核心在于字符的行号的变化规则:

从第一行开始,按顺序将字符分配到每一行,直到最后一行。
到达最后一行后,开始逆序向上排列,直到回到第一行。
重复上述过程,直到字符串排列完毕。
具体步骤
动态分配二维数组:

创建一个大小为
𝑛
n 的字符指针数组,每个指针指向一行字符。
每行分配内存,大小为字符串长度
strlen(str)
strlen(str)。
初始化每行为空字符串,用于后续拼接字符。
字符分配规则:

使用变量 reverse 控制方向:
reverse = 1 表示从下向上。
reverse = 0 表示从上向下。
计算当前字符应该插入的行号 k,将字符追加到对应行的字符串末尾。
打印与内存释放:

遍历二维数组,逐行打印已分配的字符串。
打印完成后释放每行的内存以及整个数组。

#include 
#include 
#include 

// 函数:将字符串按照“之”字形排列并打印
void getResult(char *str, int n) {
    // 动态创建二维数组,每行是一个字符串
    char **matrix = (char **)malloc(n * sizeof(char *));
    for (int i = 0; i < n; i++) {
        matrix[i] = (char *)malloc(strlen(str) + 1); // 分配每行的内存
        matrix[i][0] = '\0'; // 初始化为空字符串
    }

    int reverse = 1; // 方向标志,1 表示从下到上,0 表示从上到下

    // 遍历字符串中的每个字符
    for (int i = 0; i < strlen(str); i++) {
        int k = i % n; // 计算当前字符对应的行号
        if (k == 0) reverse = !reverse; // 到达行首或行尾时反转方向
        if (reverse) k = n - 1 - k; // 如果是从下到上,则调整行号

        // 将字符追加到对应行的字符串末尾
        int len = strlen(matrix[k]); // 获取当前行已有字符的长度
        if (len < strlen(str)) { // 确保不超过最大长度
            matrix[k][len] = str[i]; // 插入字符
            matrix[k][len + 1] = '\0'; // 添加字符串结束符
        }
    }

    // 打印排列后的结果
    for (int i = 0; i < n; i++) {
        printf("%s\n", matrix[i]);
        free(matrix[i]); // 释放每行的内存
    }
    free(matrix); // 释放二维数组的内存
}

int main() {
    char str[100]; // 假设输入字符串最大长度为 100
    int n;

    // 输入字符串和行数
    scanf("%s", str);
    scanf("%d", &n);

    // 检查行数是否合法
    if (n <= 0) {
        printf("Invalid input for n.\n");
        return 1; // 行数不能为非正数
    }

    // 调用函数实现锯齿形排列并输出
    getResult(str, n);
    return 0;
}

 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

JS解法

更新中
 class="hljs-button signin active" data-title="登录复制" data-report-click="{"spm":"1001.2101.3001.4334"}">

注意:

如果发现代码有用例覆盖不到的情况,欢迎反馈!会在第一时间修正,更新。
解题不易,如对您有帮助,欢迎点赞/收藏

注:本文转载自blog.csdn.net的CodeClimb的文章"https://blog.csdn.net/CodeClimb/article/details/144532539"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接

评论记录:

未查询到任何数据!