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

โปรแกรมลบอักขระที่ซ้ำกันออกจากสตริงที่กำหนดใน Python


สมมติว่าเรามีสตริง s เราต้องลบอักขระที่ซ้ำกันทั้งหมดที่เคยปรากฏมาก่อน สตริงสุดท้ายจะมีการเรียงลำดับของอักขระเหมือนกับของจริง

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

ดังนั้น หากอินพุตเป็น s ="bbabcaaccdbaabababc" ผลลัพธ์จะเป็น "bacd"

  • 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 = "bbabcaaccdbaabababc"
print(solve(s))

อินพุต

"bbabcaaccdbaabababc"

ผลลัพธ์

"bacd"