ทุก Substring ที่ได้จากการลบ k ตัวอักษร
กำหนดสตริงและจำนวน k ต้องการสร้าง Substring ทั้งหมดที่ได้จากการลบตัวอักษรออก k ตัว (รักษาลำดับเดิม)
วิธีที่ 1: ใช้ Recursion/Backtracking
def delete_k_chars(s, k):
res = set()
def backtrack(idx, path, removed):
if removed == k:
res.add(''.join(path + list(s[idx:])))
return
if idx == len(s): return
# ลบตัวนี้
backtrack(idx+1, path, removed+1)
# เก็บตัวนี้
backtrack(idx+1, path+[s[idx]], removed)
backtrack(0, [], 0)
return res
print(delete_k_chars('Apple', 1))
# {'pple', 'Aple', 'Appl', 'Appe'}
วิธีที่ 2: ใช้ itertools.combinations (เลือกเก็บ n-k ตัว)
from itertools import combinations
s = 'Apple'
k = 1
res = {''.join(c) for c in combinations(s, len(s)-k)}
print(res) # {'Appl', 'Aple', 'Appe', 'pple'}