Giả sử chúng ta có chuỗi nhị phân s và giá trị m, cần kiểm tra xem chuỗi có chứa m số 1 liên tiếp hoặc m số 0 liên tiếp hay không.
Ví dụ, s = "1110111000111", m = 3, đầu ra True vì có cả 3 số 0 và 3 số 1 liên tiếp.
Các bước giải quyết:
- str_size := độ dài s.
- count_0 := 0, count_1 := 0.
- Duyệt i từ 0 đến str_size - 2:
- Nếu s[i] == '0': count_1 = 0, count_0 += 1.
- Ngược lại: count_0 = 0, count_1 += 1.
- Nếu count_0 == m hoặc count_1 == m, trả về True.
- Trả về False.
Xem ví dụ dưới đây để 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(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