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

หา Substring ทั้งหมดหลังลบ k ตัวอักษรจากสตริงใน Python

ทุก 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'}