Computer >> 컴퓨터 >  >> 프로그램 작성 >> Python

파이썬에서 단어 사이의 공백을 재정렬하는 프로그램

<시간/>

몇 개의 공백 사이에 몇 개의 단어가 있는 문자열 s가 있다고 가정합니다. 각 단어는 하나 이상의 공백으로 구분됩니다. 모든 인접 단어 쌍 사이에 동일한 수의 공백이 있고 각 단어 사이의 공백 수가 최대가 되도록 공백을 재배열해야 합니다. 모든 공백을 균등하게 재배포할 수 없는 경우 끝에 추가 공백을 배치할 수 있습니다.

따라서 입력이 s =" I love programming "과 같으면 출력은 "I love programming "이 됩니다. 공백이 분산되어 있고 단어 사이에는 5개의 공백이 있습니다.

이 문제를 해결하기 위해 다음 단계를 따릅니다. −

  • 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개의 공백과 연결

    • 반환 해상도

  • 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 끝에 공백 수

  • 반환 해상도

예제(파이썬)

이해를 돕기 위해 다음 구현을 살펴보겠습니다. −

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 "