กำหนด String s มีคำวางอยู่ระหว่าง Space จำนวนหนึ่ง คั่นด้วย Space อย่างน้อย 1 ต้องจัดเรียง Space ใหม่ ให้ Space ระหว่างคำติดกันเท่ากันทุกคู่ และเพียบที่สุด หากแจกไม่หมด ให้ Space เหลือวางท้ายสุด
Input: s = " I love programming " → Output: "I love programming " (Space ระหว่างคำ = 5 Space)
ขั้นตอนการแก้ปัญหา
- res := Empty String
- total_sp := จำนวน Space ใน s
- suff_sp_cnt := total_sp
- text_array := List ของคำจาก s (split)
- num_words := ขนาด text_array
- ถ้า num_words == 1: res = text_array[0] + total_sp spaces, return res
- sep_size := total_sp // (num_words - 1)
- sep := sep_size spaces
- Loop แต่ละคำใน text_array: res += คำ + sep, suff_sp_cnt -= sep_size
- suff_sp_cnt += sep_size (เพราะ Loop เพิ่ม sep ไป 1 ครั้งเกิน)
- res = res.strip() (ตัด Space หน้า/หลัง)
- res += suff_sp_cnt spaces ท้ายสุด
- Return 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))
Input
" I love programming "
Output
"I love programming "