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

โปรแกรมลบอักขระสตริงที่เคยเกิดขึ้นมาก่อนใน Python


สมมติว่าเรามีสตริง s เราต้องลบอักขระที่เคยเกิดขึ้นแล้วและส่งคืนสตริงที่ลดลง เพื่อแก้ปัญหานี้ เราจะใช้พจนานุกรมที่สั่งเพื่อรักษาลำดับการแทรกของอักขระ ค่าจะเป็นความถี่ของอักขระเหล่านั้น อย่างไรก็ตาม ค่าความถี่ไม่สำคัญที่นี่ หลังจากสร้างพจนานุกรมแล้ว เราก็สามารถนำกุญแจมารวมกันเพื่อรับสตริงได้

ดังนั้น หากอินพุตเป็น s ="cabbbaadac" เอาต์พุตจะเป็น "cabd"

เพื่อแก้ปัญหานี้ เราจะทำตามขั้นตอนเหล่านี้ -

  • d :=พจนานุกรมที่เก็บคีย์ตามลำดับการแทรก
  • สำหรับแต่ละอักขระ c ใน s ทำ
    • ถ้า c ไม่มีอยู่ใน d แล้ว
      • d[c] :=0
    • d[c] :=d[c] + 1
  • รวมคีย์ทีละคีย์ตามลำดับเพื่อสร้างสตริงเอาต์พุตและส่งคืน

ตัวอย่าง

ให้เราดูการใช้งานต่อไปนี้เพื่อความเข้าใจที่ดีขึ้น -

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