मान लीजिए हमारे पास एक संख्या num है, हमें जांचना है कि num के बाइनरी प्रतिनिधित्व में लगातार 0 और 1 के ब्लॉक की संख्या समान है या नहीं। ध्यान रखें कि 0 और सभी 1 वाली संख्या को 0 और 1 के ब्लॉक वाली संख्या नहीं माना जाता।
उदाहरण के लिए, यदि num = 455 है, तो आउटपुट True होगा, क्योंकि इसका बाइनरी प्रतिनिधित्व 111000111 है (तीन 1, तीन 0, तीन 1)।
हल करने का तरीका
- bin_form := num का बाइनरी रूप
- one_count := एक नया सेट
- count := 1
- बाइनरी स्ट्रिंग को पार करें:
- यदि वर्तमान बिट अगले बिट के बराबर है, तो count बढ़ाएं
- अन्यथा count को one_count में जोड़ें, count := 1
- यदि one_count का आकार 1 है, तो True लौटाएं
- अन्यथा False लौटाएं
उदाहरण कोड
def solve(num):
bin_form = bin(num).replace("0b", "")
one_count = set()
count = 1
for i in range(len(bin_form) - 1):
if bin_form[i] == bin_form[i + 1]:
count += 1
else:
one_count.add(count)
count = 1
if len(one_count) == 1:
return True
return False
num = 455
print(solve(num))
इनपुट
455
आउटपुट
True