Tạo chuỗi có độ dài cho trước, sao cho mỗi chuỗi con độ dài N chứa đúng K ký tự phân biệt. Thuật toán lặp lại mẫu ký tự 'a', 'b', 'c'... đến K ký tự, sau đó lặp lại 'a' cho phần còn lại của cửa sổ N, và lặp lại quá trình cho toàn bộ chuỗi.
Ví dụ
Minh họa:
def generate_my_string(string_size, substring_size, distinct_chars):
my_string = ""
count_1 = 0
count_2 = 0
for i in range(string_size):
count_1 += 1
count_2 += 1
if count_1 <= substring_size:
if count_2 <= distinct_chars:
my_string = my_string + chr(96 + count_1)
else:
my_string = my_string + 'a'
else:
count_1 = 1
count_2 = 1
my_string = my_string + 'a'
return my_string
my_string_size = 8
my_substring_size = 6
K_distinct_chars = 4
print("Độ dài chuỗi:", my_string_size)
print("Độ dài chuỗi con:", my_substring_size)
print("Số ký tự phân biệt:", K_distinct_chars)
print("Chuỗi kết quả:", generate_my_string(my_string_size, my_substring_size, K_distinct_chars))
Kết quả
Độ dài chuỗi: 8 Độ dài chuỗi con: 6 Số ký tự phân biệt: 4 Chuỗi kết quả: abcdaaab
Giải thích
- Hàm
generate_my_stringnhận kích thước chuỗi, kích thước chuỗi con, số ký tự phân biệt. - Hai bộ đếm:
count_1theo dõi vị trí trong cửa sổ substring,count_2theo dõi số ký tự phân biệt đã dùng. - Trong cửa sổ substring: nếu chưa đủ K ký tự phân biệt, thêm ký tự tiếp theo (a, b, c...); nếu đã đủ, thêm 'a'.
- Kết thúc cửa sổ substring: reset hai bộ đếm, thêm 'a' bắt đầu cửa sổ mới.