Cho chuỗi nhị phân s (không có 0 dẫn đầu). Kiểm tra xem s có chứa tối đa một đoạn 1 liên tiếp hay không.
Ví dụ: s = "11100" → True (một đoạn "111").
Thuật toán giải quyết
- count := -1.
- Nếu len(s) == 1: True.
- Duyệt ký tự i trong s:
- Nếu i == "1" và count > -1: False (đã thấy 0 rồi lại thấy 1 → đoạn thứ 2).
- Nếu i == "0": count += 1.
- Trả về True.
Ví dụ triển khai
def solve(s):
count = -1
if len(s) == 1:
return True
for i in s:
if i == "1" and count > -1:
return False
elif i == "0":
count += 1
return True
s = "11100"
print(solve(s))Đầu vào
11100
Đầu ra
True