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

โปรแกรมสร้างตัวเลขที่น้อยที่สุดโดยที่ไม่มีตัวเลขติดกันสองหลักเหมือนกันในPython


สมมติว่าเรามีสตริง s ที่มีอักขระที่เป็นไปได้สี่ตัว "1", "2", "3" และ "?" เราสามารถใส่ "1", "2" และ "3" อันใดอันหนึ่งแทน "?" เราต้องหาจำนวนที่น้อยที่สุดที่เราสามารถทำได้เพื่อไม่ให้มีเลขสองตัวติดกันเหมือนกัน

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

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

  • ผม :=0
  • s :=รายการองค์ประกอบจาก s
  • ถ้าขนาด s <2 แล้ว
    • ถ้า s[i] เหมือนกับ "?" แล้ว
      • ส่งคืน "1"
  • ในขณะที่ฉัน <ขนาดของ s ทำ
    • ถ้า s[i] เหมือนกับ "?" แล้ว
      • ถ้าฉันเหมือนกับ 0 แล้ว
        • s[i] :="1" เมื่อ s[i + 1] ไม่ใช่ "1" มิฉะนั้น "2"
      • มิฉะนั้น เมื่อ i> 0 และ i <=ขนาด s - 2 แล้ว
        • ถ้า s[i - 1] เหมือนกับ "1" แล้ว
          • ถ้า s[i + 1] เหมือนกับ "2" แล้ว
            • s[i] :="3"
          • มิฉะนั้น
            • s[i] :="2"
        • มิฉะนั้น เมื่อ s[i - 1] เหมือนกับ "2" แล้ว
          • ถ้า s[i + 1] เหมือนกับ "2" แล้ว
            • s[i] :="3"
          • มิฉะนั้น
            • s[i] :="1"
        • มิฉะนั้น เมื่อ s[i - 1] เหมือนกับ "3" แล้ว
          • ถ้า s[i + 1] เหมือนกับ "2" แล้ว
            • s[i] :="2"
          • มิฉะนั้น
            • s[i] :="1"
      • มิฉะนั้น
        • s[i] :="1" เมื่อ s[i - 1] ไม่ใช่ "1" มิฉะนั้น "2"
    • ผม :=ผม + 1
  • รวมรายการของ s เป็นสตริงแล้วส่งคืน

ตัวอย่าง

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

def solve(s):
   i = 0
   s = list(s)
   if len(s) < 2:
      if s[i] == "?":
         return "1"
   while i < len(s):
      if s[i] == "?":
         if i == 0:
            s[i] = "1" if s[i + 1] != "1" else "2"
         elif i > 0 and i <= len(s) - 2:
            if s[i - 1] == "1":
               if s[i + 1] == "2":
                  s[i] = "3"
               else:
                  s[i] = "2"
            elif s[i - 1] == "2":
               if s[i + 1] == "1":
                  s[i] = "3"
               else:
                  s[i] = "1"
            elif s[i - 1] == "3":
               if s[i + 1] == "1":
                  s[i] = "2"
               else:
                  s[i] = "1"
         else:
            s[i] = "1" if s[i - 1] != "1" else "2"
      i += 1
   return "".join(s)

s = "2??3?"
print(solve(s))

อินพุต

"2??3?"

ผลลัพธ์

21231