Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Python

Python - Tạo chuỗi con độ dài N với K ký tự phân biệt


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_string nhậ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_1 theo dõi vị trí trong cửa sổ substring, count_2 theo 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.