python-leetcode-1592. 重新排列单词间的空格

1592. 重新排列单词间的空格 - 力扣(LeetCode)

可以分几个步骤来解决这个问题:

步骤说明:

  1. 统计空格数量

  2. 提取所有单词

  3. 计算每对单词之间应插入的空格数量

  4. 构造最终字符串

举个例子:

text = "  this   is  a sentence "
  • 单词有:["this", "is", "a", "sentence"]

  • 空格数 = 9

  • 单词数 = 4,单词之间有 3 个间隔

  • 每个间隔可以放:9 // 3 = 3 个空格

  • 剩下的空格 = 9 % 3 = 0

  • 最终:"this___is___a___sentence"(下划线代表空格)

Python代码如下:

def reorder_spaces(text: str) -> str:
    # 统计空格数量
    space_count = text.count(' ')
    # 提取所有单词
    words = text.split()
    # 单词数量
    num_words = len(words)

    if num_words == 1:
        # 只有一个单词,所有空格放到末尾
        return words[0] + ' ' * space_count

    # 平均每对单词间的空格数
    spaces_between = space_count // (num_words - 1)
    # 剩余空格
    trailing_spaces = space_count % (num_words - 1)

    # 用空格连接单词,并加上末尾多余的空格
    return (' ' * spaces_between).join(words) + ' ' * trailing_spaces

你可以传入任意字符串运行看看效果,比如:

print(reorder_spaces("  hello   world  "))
# 输出: "hello   world  "
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值