我的博客

5316. 竖直打印单词 leetcode 周赛 172 - python

目录
  1. 解答

https://leetcode-cn.com/contest/weekly-contest-172/problems/print-words-vertically/

给你一个字符串 s。请你按照单词在 s 中的出现顺序将它们全部竖直返回。
单词应该以字符串列表的形式返回,必要时用空格补位,但输出尾部的空格需要删除(不允许尾随空格)。
每个单词只能放在一列上,每一列中也只能有一个单词。

示例 1:

1
2
3
4
5
6
输入:s = "HOW ARE YOU"
输出:["HAY","ORO","WEU"]
解释:每个单词都应该竖直打印。
"HAY"
"ORO"
"WEU"

示例 2:

1
2
3
4
5
6
输入:s = "TO BE OR NOT TO BE"
输出:["TBONTB","OEROOE"," T"]
解释:题目允许使用空格补位,但不允许输出末尾出现空格。
"TBONTB"
"OEROOE"
" T"

解答

这个远远没有题库里的第 6 题 Z 字形变换 难,这题很靠前,估计很多人都做过吧。

本题目尤其用 python,连去结尾空格都有函数。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class Solution:
def printVertically(self, s: str) -> List[str]:
s = s.split(' ')
max_l = 0
for w in s:
max_l = max(max_l, len(w))
r = [[] for i in range(max_l)]
for w in s:
for i in range(max_l):
if i < len(w):
r[i].append(w[i])
else:
r[i].append(' ')
rr = []
for x in r:
rr.append(''.join(x).rstrip())
return rr

评论无需登录,可以匿名,欢迎评论!