สมมติว่าเรามีสตริง s เราต้องลบอักขระที่ซ้ำกันทั้งหมดที่เคยปรากฏมาก่อน สตริงสุดท้ายจะมีการเรียงลำดับของอักขระเหมือนกับของจริง
เราสามารถแก้ปัญหานี้ได้โดยใช้พจนานุกรมที่สั่งเพื่อรักษาลำดับการแทรกของอักขระ ค่าจะเป็นความถี่ของอักขระเหล่านั้น อย่างไรก็ตาม ค่าความถี่ไม่สำคัญที่นี่ หลังจากสร้างพจนานุกรมแล้ว เราก็สามารถนำกุญแจมารวมกันเพื่อรับสตริงได้
ดังนั้น หากอินพุตเป็น s ="bbabcaaccdbaabababc" ผลลัพธ์จะเป็น "bacd"
- d :=พจนานุกรมที่เก็บคีย์ตามลำดับการแทรก
- สำหรับแต่ละอักขระ c ใน s ทำ
- ถ้า c ไม่มีอยู่ใน d แล้ว
- d[c] :=0
- d[c] :=d[c] + 1
- ถ้า c ไม่มีอยู่ใน d แล้ว
- รวมคีย์ทีละคีย์ตามลำดับเพื่อสร้างสตริงเอาต์พุตและส่งคืน
ตัวอย่าง
ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -
from collections import OrderedDict def solve(s): d = OrderedDict() for c in s: if c not in d: d[c] = 0 d[c] += 1 return ''.join(d.keys()) s = "bbabcaaccdbaabababc" print(solve(s))
อินพุต
"bbabcaaccdbaabababc"
ผลลัพธ์
"bacd"