สมมติว่าเรามีสตริง 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']