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

โปรแกรมหาคะแนนสูงสุดโดยแยกสตริงไบนารีออกเป็นสองส่วนในPython


สมมติว่าเรามีสตริงไบนารี s ตอนนี้ ให้เราพิจารณาการดำเนินการ โดยเราแยกสตริงออกเป็นสองสตริงย่อยที่ไม่ว่างเปล่า s1 และ s2 คะแนนของการแยกนี้คือผลรวมของจำนวน "0" ใน s1 และผลรวมของ "1" ใน s2 เราต้องหาคะแนนสูงสุดให้ได้

ดังนั้น หากอินพุตเป็น s ="011001100111" ผลลัพธ์จะเป็น 8 เพราะเราสามารถแยกสตริงเช่น "01100" + "110111" คะแนนคือ 3 + 5 =8

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

  • คน :=จำนวน "1" ใน s

  • ศูนย์ :=0

  • ตอบ :=0

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

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

      • ศูนย์ :=ศูนย์ + 1

    • มิฉะนั้น

      • คน :=คน - 1

    • ans :=สูงสุดของ ans และ (หนึ่ง + ศูนย์)

  • กลับมาอีกครั้ง

ตัวอย่าง

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

def solve(s):
   ones = s.count("1")
   zeros = 0
   ans = 0
   for i in range(len(s) - 1):
      if s[i] == "0":
         zeros += 1
      else:
         ones -= 1
      ans = max(ans, ones + zeros)
   return ans

s = "011001100111"
print(solve(s))

อินพุต

"011001100111"

ผลลัพธ์

8