Python 中重新排列单词之间空格的程序


假设我们有一个字符串 s,其中包含一些单词,这些单词放置在一些空格之间。每个单词之间至少用一个空格隔开。我们必须重新排列空格,以便每对相邻单词之间都有相同数量的空格,并且每个单词之间的空格数最大化。如果我们无法平均分配所有空格,我们可以将额外的空格放在末尾。

因此,如果输入类似于 s = " I love programming ",则输出将为 "I love programming ",请参见空格的分布,单词之间有五个空格。

为了解决这个问题,我们将遵循以下步骤 -

  • res := 空字符串

  • total_sp := s 中空格的数量

  • suff_sp_cnt := total_sp

  • text_array := 来自 s 的单词列表

  • num_words := text_array 的大小

  • 如果 num_words 等于 1,则

    • res := text_array[0] 与 total_sp 个空格连接

    • 返回 res

  • sep_size := total_sp /(num_words - 1) 的商

  • sep := sep_size 个空格

  • 对于 text_array - 1 中的每个 i,执行以下操作

    • res := res + i

    • res := res + sep

    • suff_sp_cnt := suff_sp_cnt - sep_size

  • suff_sp_cnt := suff_sp_cnt + sep_size

  • res := 删除左右两侧的多余空格

  • res := res 在末尾连接 suff_sp_cnt 个空格

  • 返回 res

示例(Python)

让我们看看以下实现以更好地理解 -

 现场演示

def solve(s):
   res = ""
   total_sp = s.count(" ")
   suff_sp_cnt = total_sp

   text_array = s.split()
   num_words = len(text_array)

   if num_words == 1:
      res = text_array[0] + total_sp * " "
      return res

   sep_size = total_sp // (num_words - 1)
   sep = sep_size * " "

   for i in text_array:
      res += i
      res += sep
      suff_sp_cnt -= sep_size

   suff_sp_cnt += sep_size
   res = res.strip()
   res += suff_sp_cnt * " "

   return res

s = " I love programming "
print(solve(s))

输入

" I love programming "

输出

"I love programming "

更新于: 2021 年 5 月 17 日

355 次查看

开启你的 职业生涯

通过完成课程获得认证

开始学习
广告
© . All rights reserved.