สมมติว่าเรามีสตริง s เราต้องหาตัวอักษรของ s ผสมกันทั้งหมดที่เป็นไปได้ หากมีสองสตริงที่มีชุดอักขระเหมือนกัน ให้แสดงคำศัพท์ที่เล็กที่สุด และข้อจำกัดอย่างหนึ่งคืออักขระแต่ละตัวมีเอกลักษณ์เฉพาะตัว
ดังนั้น หากอินพุตเป็น s ="pqr" ผลลัพธ์จะเป็น ['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- st_arr :=รายการใหม่
- สำหรับฉันในช่วงขนาด s - 1 ถึง 0, ลดลง 1 ทำ
- สำหรับ j ในช่วง 0 ถึงขนาดของ st_arr - 1 ให้ทำ
- แทรก (s[i] ต่อ st_arr[j]) ที่ส่วนท้ายของ st_arr
- แทรก s[i] ที่ส่วนท้ายของ st_arr
- สำหรับ j ในช่วง 0 ถึงขนาดของ st_arr - 1 ให้ทำ
- ส่งคืน st_arr
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
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)) อินพุต
"pqr"
ผลลัพธ์
['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']