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
- nếu s [i] giống với '0', thì
- 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