Computer >> Máy Tính >  >> Lập trình >> Python

Kiểm tra xem một chuỗi có m số 1 hoặc 0 liên tiếp bằng Python hay không

Giả sử chúng ta có một chuỗi nhị phân s và một giá trị khác m, chúng ta phải kiểm tra xem chuỗi có m chữ số 1 liên tiếp hay m số 0 liên tiếp hay không.

Vì vậy, nếu đầu vào là s =​​"1110111000111", m =3, thì đầu ra sẽ là True vì có ba số 0 và 1 liên tiếp.

Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -

  • str_size:=kích thước của s
  • count_0:=0, count_1:=0
  • đối với tôi trong phạm vi 0 đến str_size - 2, thực hiện
    • nếu s [i] giống với '0', thì
      • count_1:=0
      • count_0:=count_0 + 1
    • nếu không,
      • count_0:=0
      • count_1:=count_1 + 1
    • nếu count_0 giống với m hoặc count_1 giống với m, thì
      • trả về True
  • trả về Sai

Hãy cùng chúng tôi xem cách triển khai sau để hiểu rõ hơn -

Ví dụ

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))

Đầu vào

"1110111000111", 3

Đầu ra

True