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 次檢視

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告