Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

โปรแกรมหาทุกคอมบิเนชันของตัวอักษรในสตริงที่ไม่ซ้ำกันใน Python

ได้รับสตริง s ที่ตัวอักษรไม่ซ้ำกัน ต้องการหาคอมบิเนชันทั้งหมดของตัวอักษร (ทุกความยาว) และจัดเรียงตามลำดับพจนานุกรม (lexicographically) โดยที่ถ้ามีชุดตัวอักษรเดียวกัน ให้แสดงเฉพาะตัวที่เล็กที่สุดตามลำดับพจนานุกรม

ตัวอย่าง: s = "pqr" ผลลัพธ์: ['r', 'qr', 'q', 'pr', 'pqr', 'pq', 'p']

ขั้นตอนการแก้ปัญหา

  1. สร้างลิสต์ว่าง st_arr
  2. วนลูป i จาก len(s)-1 ลงมาที่ 0:
    • วนลูป j จาก 0 ถึง len(st_arr)-1: เพิ่ม s[i] + st_arr[j] เข้า st_arr
    • เพิ่ม s[i] เข้า st_arr
  3. คืนค่า 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']