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

โปรแกรมค้นหาความยาวของลำดับย่อยที่ยาวที่สุดใน Python


สมมติว่าเรามีสตริงที่มีวงเล็บ "(" และ ")" เราต้องหาความยาวของชุดย่อยที่ยาวที่สุดของวงเล็บแบบสมดุล

ดังนั้น หากอินพุตเป็น s ="())(()(" ผลลัพธ์จะเป็น 4 เนื่องจากเราสามารถหาลำดับย่อยได้ เช่น "()()"

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

  • res :=0

  • n :=ขนาดของ s

  • ปิด :=0

  • สำหรับฉันอยู่ในช่วง n - 1 ถึง 0, ลดลง 1 ทำ

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

      • ปิด :=ปิด + 1

    • มิฉะนั้น

      • ถ้าปิด> 0 แล้ว

        • ปิด :=ปิด - 1

        • res :=res + 2

  • ผลตอบแทน

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

ตัวอย่าง

class Solution:def Solve(self, s):res =0 n =len(s) close =0 for i in range(n - 1, -1, -1):if s[i] ==" )":ปิด +=1 อื่น:ถ้าปิด> 0:ปิด -=1 res +=2 ส่งคืน resob =Solution()s ="())(()("print(ob.solve(s)) 

อินพุต

"())(()("

ผลลัพธ์

4