สมมติว่าเรามีสตริง s เราต้องลบอักขระที่เคยเกิดขึ้นแล้วและส่งคืนสตริงที่ลดลง เพื่อแก้ปัญหานี้ เราจะใช้พจนานุกรมที่สั่งเพื่อรักษาลำดับการแทรกของอักขระ ค่าจะเป็นความถี่ของอักขระเหล่านั้น อย่างไรก็ตาม ค่าความถี่ไม่สำคัญที่นี่ หลังจากสร้างพจนานุกรมแล้ว เราก็สามารถนำกุญแจมารวมกันเพื่อรับสตริงได้
ดังนั้น หากอินพุตเป็น s ="cabbbaadac" เอาต์พุตจะเป็น "cabd"
เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -
- 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 = "cabbbaadac" print(solve(s))
อินพุต
"cabbbaadac"
ผลลัพธ์
cabd