Giả sử chúng ta có một chuỗi nhị phân str, cần kiểm tra xem tất cả các số 1 trong chuỗi có cách đều nhau hay không. Nói cách khác, khoảng cách giữa mọi hai số 1 liên tiếp là giống nhau. Chuỗi chứa ít nhất hai số 1.
Ví dụ, nếu đầu vào là s = "100001000010000", thì đầu ra sẽ là True vì các số 1 cách nhau 4 vị trí.
Các bước giải quyết:
- index := danh sách rỗng lưu vị trí các số 1.
- Duyệt i từ 0 đến độ dài s - 1:
- Nếu s[i] == '1', thêm i vào index.
- t := độ dài của index.
- Duyệt i từ 1 đến t - 1:
- Nếu (index[i] - index[i-1]) != (index[1] - index[0]), trả về False.
- Trả về True.
Xem ví dụ dưới đây để hiểu rõ hơn:
Ví dụ
def solve(s):
index = []
for i in range(len(s)):
if s[i] == '1':
index.append(i)
t = len(index)
for i in range(1, t):
if (index[i] - index[i - 1]) != (index[1] - index[0]):
return False
return True
s = "100001000010000"
print(solve(s))
Đầu vào
"100001000010000"
Đầu ra
True