Giả sử ta có chuỗi s với các từ xen kẽ khoảng trắng. Mỗi từ cách nhau ít nhất một khoảng trắng. Sắp xếp lại khoảng trắng sao cho số khoảng trắng giữa mọi cặp từ liền kề bằng nhau và tối đa. Nếu không chia đều được, đặt khoảng trắng dư vào cuối.
Ví dụ: s = " I love programming ", kết quả "I love programming " (5 khoảng trắng giữa các từ).
Giải thuật
res := "",total_sp := s.count(" ")suff_sp_cnt := total_sptext_array := s.split(),num_words := len(text_array)- Nếu
num_words == 1: trả vềtext_array[0] + " " * total_sp sep_size := total_sp // (num_words - 1),sep := " " * sep_size- Với mỗi từ
itrongtext_array:res += i + sepsuff_sp_cnt -= sep_size
suff_sp_cnt += sep_sizeres := res.strip()res += " " * suff_sp_cnt- Trả về
res
Ví dụ (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 "