Cho chuỗi s (các ký tự duy nhất). Tìm tất cả các tổ hợp ký tự của s. Nếu hai chuỗi có cùng tập ký tự, chỉ giữ chuỗi nhỏ nhất theo thứ tự từ điển.
Ví dụ: s = "pqr" → kết quả ['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p'].
Giải thuật
- Khởi tạo mảng
st_arrrỗng. - Duyệt i từ len(s)-1 xuống 0:
- Với mỗi phần tử hiện có trong
st_arr, thêm s[i] + phần tử đó vàost_arr. - Thêm s[i] vào
st_arr.
- Với mỗi phần tử hiện có trong
- Trả về
st_arr.
Ví dụ mã Python
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)) # Output: ['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']
Đầu vào
"pqr"
Đầu ra
['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']