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

ตรวจสอบว่าสตริงมี m ต่อเนื่องกัน 1 วินาทีหรือ 0 วินาทีใน Python


สมมติว่าเรามีสตริงไบนารี s และอีกค่าหนึ่งคือ m เราต้องตรวจสอบว่าสตริงนั้นมีค่า m ติดต่อกันเป็น 1 หรือ m ติดต่อกันเป็น 0 หรือไม่

ดังนั้น หากอินพุตเป็น s ="1110111000111", m =3 เอาต์พุตจะเป็น True เนื่องจากมี 0 และ 1 ติดต่อกันสามรายการ

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

  • str_size :=ขนาดของ s
  • count_0 :=0, count_1 :=0
  • สำหรับฉันในช่วง 0 ถึง str_size - 2 ทำ
    • ถ้า s[i] เหมือนกับ '0' แล้ว
      • count_1 :=0
      • count_0 :=count_0 + 1
    • มิฉะนั้น
      • count_0 :=0
      • count_1 :=count_1 + 1
    • ถ้า count_0 เหมือนกับ m หรือ count_1 เหมือนกับ m แล้ว
      • คืนค่า True
  • คืนค่าเท็จ

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

ตัวอย่าง

def solve(s, m):
   str_size = len(s)
   count_0 = 0
   count_1 = 0
   for i in range(0, str_size - 1):
      if (s[i] == '0'):
         count_1 = 0
         count_0 += 1
      else :
         count_0 = 0
         count_1 += 1
      if (count_0 == m or count_1 == m):
         return True
   return False
s = "1110111000111"
m = 3
print(solve(s, m))

อินพุต

"1110111000111", 3

ผลลัพธ์

True