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