Giả sử chúng ta có một chuỗi nhị phân str, chúng ta phải kiểm tra xem tất cả các số 1 trong chuỗi có bằng nhau hay không. Nói cách khác, khoảng cách giữa hai giây 1 là như nhau. Và chuỗi chứa ít nhất hai số 1.
Vì vậy, nếu đầu vào là s ="100001000010000", thì đầu ra sẽ là Đúng vì các số 1 ở khoảng cách 4 với nhau.
Để giải quyết vấn đề này, chúng tôi sẽ làm theo các bước sau -
- index:=một danh sách mới
- đối với tôi trong phạm vi từ 0 đến kích thước của s, thực hiện
- nếu s [i] giống 1, thì
- chèn i vào cuối chỉ mục
- nếu s [i] giống 1, thì
- t:=kích thước của chỉ mục
- đối với tôi trong phạm vi từ 1 đến t - 1, thực hiện
- nếu (index [i] - index [i - 1]) không giống với (index [1] - index [0]), thì
- trả về Sai
- nếu (index [i] - index [i - 1]) không giống với (index [1] - index [0]), thì
- trả về True
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): 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