मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग str है, हमें यह जांचना है कि स्ट्रिंग में सभी 1s समान दूरी पर हैं या नहीं। दूसरे शब्दों में, प्रत्येक दो 1s के बीच की दूरी समान होती है। और स्ट्रिंग में कम से कम दो 1s होते हैं।
इसलिए, यदि इनपुट s ="10000100010000" जैसा है, तो आउटपुट सही होगा क्योंकि 1s एक दूसरे से 4 की दूरी पर हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- सूचकांक :=एक नई सूची
- i के लिए 0 से लेकर s के आकार तक के लिए, करें
- यदि s[i] 1 के समान है, तो
- इंडेक्स के अंत में i डालें
- यदि s[i] 1 के समान है, तो
- t :=अनुक्रमणिका का आकार
- 1 से t-1 की श्रेणी में i के लिए
- अगर (इंडेक्स [i] - इंडेक्स [i - 1]) (इंडेक्स [1] - इंडेक्स [0]) के समान नहीं है, तो
- झूठी वापसी
- अगर (इंडेक्स [i] - इंडेक्स [i - 1]) (इंडेक्स [1] - इंडेक्स [0]) के समान नहीं है, तो
- सही लौटें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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))
इनपुट
"100001000010000"
आउटपुट
True