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

โปรแกรมนับจำนวนอักขระในแต่ละวงเล็บความลึกใน Python


สมมติว่าเรามีสตริง s ซึ่งประกอบด้วยอักขระสามตัว "X", "(" และ ")" สตริงมีวงเล็บเหลี่ยมที่สมดุลและอยู่ระหว่าง "X" บางตัวพร้อมกับวงเล็บที่ซ้อนกันอยู่อาจมีการเรียกซ้ำ เราต้องหาจำนวน "X" ที่ความลึกของวงเล็บเป็น s โดยเริ่มจากความลึกที่ตื้นที่สุดไปจนถึงความลึกที่ลึกที่สุด

ดังนั้น หากอินพุตเป็น s ="(XXX(X(XX))XX)" ผลลัพธ์จะเป็น [5, 1, 2]

โปรแกรมนับจำนวนอักขระในแต่ละวงเล็บความลึกใน Python

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

  • ความลึก :=-1
  • ออก :=รายการใหม่
  • สำหรับแต่ละ c ใน s ทำ
    • ถ้า c เหมือนกับ "(" แล้ว
      • ความลึก :=ความลึก + 1
    • มิฉะนั้นเมื่อ c เหมือนกับ ")" แล้ว
      • ความลึก :=ความลึก - 1
    • ถ้าความลึกเท่ากับขนาดของ out
      • แทรก 0 ที่ส่วนท้ายของการออก
    • ถ้า c เหมือนกับ "X" แล้ว
      • ออก[ลึก] :=ออก[ลึก] + 1
  • คืนสินค้า

ตัวอย่าง

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

def Solve(s):ความลึก =-1 ออก =[] สำหรับ c ใน s:ถ้า c =="(":ความลึก +=1 elif c ==")":ความลึก -=1 ถ้าความลึก ==len(out):out.append(0) if c =="X":out[depth] +=1 return outs ="(XXX(X(XX))XX)"print(solve(s)) 

อินพุต

"(XXX(X(XX))XX)"

ผลลัพธ์

[5, 1, 2]