Computer >> Máy Tính >  >> Lập trình >> Python

Chương trình sắp xếp lại khoảng trắng giữa các từ trong Python

Giả sử chúng ta có một chuỗi s với một số từ được đặt trong một số khoảng trắng. Mỗi từ cách nhau ít nhất một dấu cách. Chúng ta phải sắp xếp lại các khoảng trắng sao cho có cùng số khoảng trắng giữa mọi cặp từ liền kề và số khoảng trắng giữa mỗi từ là lớn nhất. Nếu chúng tôi không thể phân phối lại tất cả các khoảng trắng bằng nhau, chúng tôi có thể đặt các khoảng trắng thừa ở cuối.

Vì vậy, nếu đầu vào là s =​​"Tôi yêu lập trình", thì đầu ra sẽ là "Tôi yêu lập trình", hãy xem các khoảng trắng được phân bố, giữa các từ, có năm khoảng trắng.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • res:=chuỗi trống

  • total_sp:=số khoảng trắng tính bằng s

  • Suff_sp_cnt:=total_sp

  • text_array:=danh sách các từ của s

  • num_words:=kích thước của text_array

  • nếu num_words giống 1, thì

    • res:=text_array [0] nối với số lượng khoảng trắng total_sp

    • trả lại res

  • sep_size:=quotient of total_sp / (num_words - 1)

  • sep:=sep_size số khoảng trắng

  • đối với mỗi tôi trong text_array - 1, thực hiện

    • res:=res + i

    • res:=res + sep

    • Suff_sp_cnt:=Suff_sp_cnt - sep_size

  • Suff_sp_cnt:=Suff_sp_cnt + sep_size

  • res:=loại bỏ các khoảng trắng thừa từ trái và phải

  • res:=res nối tiếp số lượng khoảng trắng ở cuối

  • trả lại res

Ví dụ (Python)

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

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))

Đầu vào

" I love programming "

Đầu ra

" I love programming "