首页 话题 小组 问答 好文 用户 我的社区 域名交易 唠叨

[教程]破解LeetCode 1324题:C语言编程挑战全解析

发布于 2025-07-12 22:00:49
0
1121

1. 题目描述LeetCode 1324题,题目名称为“Print Words Vertically”,要求你给定一个字符串 s,按照字典序打印出给定字符串的每一列,如果某一列没有字符,则用空格填充。...

1. 题目描述

LeetCode 1324题,题目名称为“Print Words Vertically”,要求你给定一个字符串 s,按照字典序打印出给定字符串的每一列,如果某一列没有字符,则用空格填充。

2. 解题思路

为了解决这个问题,我们可以按照以下步骤进行:

  1. 确定列数:首先确定字符串中最大的字符长度,这个长度就是列数。
  2. 遍历列:从第0列开始,遍历每一列。
  3. 提取字符:对于每一列,从字符串的每个单词中提取相应位置的字符。
  4. 填充空格:如果某一列没有字符,则用空格填充。
  5. 打印结果:最后,按照从上到下的顺序打印每一列。

3. 代码实现

下面是使用C语言实现的代码示例:

#include 
#include 
void printVertically(const char *s) { int len = strlen(s); int maxLen = 0; int wordCount = 0; const char *words[len + 1]; // 确定列数 for (int i = 0; i < len; ++i) { if (s[i] != ' ') { if (maxLen < i + 1) { maxLen = i + 1; } wordCount++; words[wordCount - 1] = s + i; } } // 遍历列 for (int col = 0; col < maxLen; ++col) { int printed = 0; for (int row = 0; row < wordCount; ++row) { if (col < strlen(words[row])) { printf("%c", words[row][col]); printed = 1; } else { printf(" "); } } if (!printed) { printf(" "); } printf("\n"); }
}
int main() { const char *s = "Hello World"; printVertically(s); return 0;
}

4. 测试用例

输入:Hello World输出:

H
e
l
l
o
W
o
r
l
d

输入:LEETCODE输出:

L
E
E
T
C
O
D
E

通过以上步骤和代码实现,我们可以成功地解决LeetCode 1324题。

评论
一个月内的热帖推荐
csdn大佬
Lv.1普通用户

452398

帖子

22

小组

841

积分

赞助商广告
站长交流