1592. 重新排列单词间的空格
大约 2 分钟
---
1592. 重新排列单词间的空格
- 标签:字符串
- 难度:简单
题目链接
题目大意
描述:给定一个字符串 ,由单词和空格组成。单词之间可能有多个空格。
要求:重新排列空格,使单词之间的空格数尽量平均。如果无法完全平均,多出的空格放在最左侧。返回重新排列后的字符串。
说明:
- 。
示例:
- 示例 1:
输入:text = " this is a sentence "
输出:"this is a sentence"
解释:总共有 9 个空格和 4 个单词。可以将 9 个空格平均分配到相邻单词之间,相邻单词间空格数为:9 / (4-1) = 3 个。- 示例 2:
输入:text = " practice makes perfect"
输出:"practice makes perfect "
解释:总共有 7 个空格和 3 个单词。7 / (3-1) = 3 个空格加上 1 个多余的空格。多余的空格需要放在字符串的末尾。解题思路
思路 1:模拟
1. 核心思想
统计空格总数 和单词列表 。如果单词数为 ,则单词之间有 个空隙。每个空隙放 个空格(如果 ),剩余 个空格放在最左侧。
如果 ,所有空格放在单词右侧。
2. 具体步骤
第 1 步:统计空格数 space\_cnt = text.count(' ')。
第 2 步:分割出单词列表 。
第 3 步:
- 如果 :返回 words[0] + ' ' \times space\_cnt。
- 否则:
- (单词间空格数)。
- (多余空格放开头)。
- 构造结果。
3. 举例说明
以 为例:
空格数 ,单词 ,。
,。
结果:"this is a sentence"。
以 为例:
空格数 ,单词 ,。
,。
结果:" practice makes perfect"(开头 个空格,单词间 个空格)。
思路 1:代码
class Solution:
def reorderSpaces(self, text: str) -> str:
words = text.split()
space_cnt = text.count(' ')
if len(words) == 1:
return words[0] + ' ' * space_cnt
between = space_cnt // (len(words) - 1)
extra = space_cnt % (len(words) - 1)
return (' ' * between).join(words) + ' ' * extra思路 1:复杂度分析
- 时间复杂度:。
- 空间复杂度:。