Giả sử chúng ta có một chuỗi s. Chúng ta phải tìm tất cả các kết hợp có thể có của các chữ cái của s. Nếu có hai chuỗi với cùng một bộ ký tự, thì hãy hiển thị từ vựng nhỏ nhất trong số đó. Và một hạn chế là mỗi ký tự trong s là duy nhất.
Vì vậy, nếu đầu vào là s ="pqr", thì đầu ra sẽ là ['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- st_arr:=một danh sách mới
- đối với tôi trong phạm vi kích thước từ s - 1 đến 0, giảm đi 1, thực hiện
- đối với j trong phạm vi 0 đến kích thước của st_arr - 1, thực hiện
- chèn (s [i] nối st_arr [j]) vào cuối st_arr
- chèn s [i] vào cuối st_arr
- đối với j trong phạm vi 0 đến kích thước của st_arr - 1, thực hiện
- return st_arr
Ví dụ
Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -
def solve(s): st_arr = [] for i in range(len(s)-1,-1,-1): for j in range(len(st_arr)): st_arr.append(s[i]+st_arr[j]) st_arr.append(s[i]) return st_arr s = "pqr" print(solve(s))
Đầu vào
"pqr"
Đầu ra
['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']