मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग str है। हमें यह जांचना है कि स्ट्रिंग में सभी 1s समान दूरी (equidistant) पर हैं या नहीं। यानी हर दो 1s के बीच की दूरी समान है। और स्ट्रिंग में कम से कम दो 1s हैं।
उदाहरण के लिए, यदि इनपुट s = "100001000010000" है, तो आउटपुट True होगा क्योंकि 1s एक-दूसरे से दूरी 4 पर हैं।
समाधान दृष्टिकोण
हम सभी 1s के इंडेक्स एकत्र करते हैं, फिर लगातार 1s के बीच के अंतर की जांच करते हैं कि वे सभी समान हैं या नहीं।
एल्गोरिदम चरण:
indexसूची बनाएं जिसमें सभी 1s के इंडेक्स स्टोर होंt = len(index)- इंडेक्स 1 से t-1 तक के लिए:
- यदि
index[i] - index[i-1] != index[1] - index[0], तो False लौटाएं - True लौटाएं
पायथन कार्यान्वयन
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)) # True
इनपुट
"100001000010000"
आउटपुट
True
व्याख्या:
स्ट्रिंग "100001000010000" में 1s इंडेक्स 0, 5, 10 पर हैं।
- 5 - 0 = 5
- 10 - 5 = 5
दोनों अंतर समान हैं, इसलिए 1s समान दूरी पर हैं।