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

โปรแกรมแทนที่สัญลักษณ์คำถามทั้งหมดเพื่อหลีกเลี่ยงอักขระซ้ำต่อเนื่องในPython


สมมติว่าเรามีสตริงตัวพิมพ์เล็กที่มีเฉพาะตัวอักษรและ '?' ตัวอักษรเราต้องแปลงทั้งหมด '?' อักขระเป็นตัวพิมพ์เล็กเพื่อให้สตริงสุดท้ายไม่มีอักขระซ้ำต่อเนื่องกัน หากมีวิธีแก้ไขมากกว่าหนึ่งวิธี ให้ส่งคืนวิธีใดวิธีหนึ่ง

ดังนั้น หากอินพุตเป็น s ="hel??" ผลลัพธ์จะเป็น helab เครื่องหมายคำถามแรกอาจเป็นอะไรก็ได้ยกเว้น 'l' และเมื่อให้อันแรก อันที่สองจะเป็นอะไรก็ได้ยกเว้น 'a' .

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

  • ถ้าขนาดเท่ากับ 1 แล้ว

    • ถ้า s เหมือนกับ "?" แล้ว

      • ส่งคืน "a"

    • ผลตอบแทน s

  • s :=รายการอักขระที่มีอยู่ใน s

  • สำหรับฉันในช่วง 0 ถึงขนาด s - 1 ทำ

    • ถ้า s[i] เหมือนกับ "?" แล้ว

      • ถ้าฉันเหมือนกับ 0 และ s[i+1] เหมือนกับ "?" ดังนั้น

        • s[i] :="a"

      • มิฉะนั้น เมื่อ i เท่ากับ 0 และ s[i+1] จะเหมือนกับ "a" ดังนั้น

        • s[i] :="b"

      • มิฉะนั้นเมื่อฉันเหมือนกับ 0 แล้ว

        • s[i] :="a"

      • มิฉะนั้น เมื่อ i เท่ากับ (ขนาด s)-1 และ s[i-1] เท่ากับ "a" ดังนั้น

        • s[i] :="b"

      • มิฉะนั้นเมื่อ i เท่ากับ (ขนาด s)-1 แล้ว

        • s[i] :="a"

      • มิฉะนั้น เมื่อ s[i-1] เหมือนกับ "a" และ s[i+1] เหมือนกับ "?" ดังนั้น

        • s[i] :="b"

      • มิฉะนั้นเมื่อ s[i+1] เหมือนกับ "?" แล้ว

        • s[i] :="a"

      • มิฉะนั้น เมื่อ (s[i-1] เหมือนกับ "a" และ s[i+1] เหมือนกับ "b") หรือ (s[i-1] เหมือนกับ "b" และ s[i+1] เหมือนกับ "a") แล้ว

        • s[i] :="c"

      • ไม่เช่นนั้นเมื่อ s[i-1] หรือ s[i+1] คือ "a" ดังนั้น

        • s[i] :="b"

      • มิฉะนั้น

        • s[i] :="a"

  • คืนค่า s หลังจากรวมอักขระเป็นสตริง

ตัวอย่าง (Python)

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

def solve(s):
   if len(s) == 1 :
      if s == "?":
         return "a"
      return s
   s = list(s)
   for i in range(len(s)):
      if s[i] == "?":
         if i == 0 and s[i+1] == "?":
            s[i] = "a"
         elif i == 0 and s[i+1] == "a":
            s[i] = "b"
         elif i == 0:
            s[i] = "a"
         elif i == len(s)-1 and s[i-1] == "a":
            s[i] = "b"
         elif i == len(s)-1:
            s[i] = "a"
         elif s[i-1] == "a" and s[i+1] == "?":
            s[i] = "b"
         elif s[i+1] == "?":
            s[i] = "a"
         elif (s[i-1] == "a" and s[i+1] == "b") or (s[i-1] == "b" and s[i+1] == "a"):
            s[i] = "c"
         elif "a" in (s[i-1],s[i+1]):
            s[i] = "b"
         else:
            s[i] = "a"
   return "".join(s)

s = "hel??"
print(solve(s))

อินพุต

"hel??"

ผลลัพธ์

helab