मान लीजिए हमारे पास एक नॉन-नेगेटिव मान n है, हमें उसके बाइनरी प्रतिनिधित्व में 1s के सबसे लंबे लगातार रन की लंबाई ढूंढनी है।
उदाहरण के लिए, यदि इनपुट है n = 1469, तो आउटपुट 4 होगा, क्योंकि 1469 का बाइनरी प्रतिनिधित्व "10110111101" है, इसलिए चार लगातार 1s हैं।
एल्गोरिदम
count := 0while n != 0:n := n & (n << 1)count := count + 1
countलौटाएं
यह एल्गोरिदम ब्रायन कर्निघन के एल्गोरिदम का उपयोग करता है जहां प्रत्येक पुनरावृत्ति में सबसे दाएं 1 को साफ़ किया जाता है, लेकिन यहां हम n & (n << 1) का उपयोग करते हैं जो लगातार 1s को प्रभावी ढंग से गिनता है।
उदाहरण कार्यान्वयन
def solve(n):
count = 0
while n != 0:
n = n & (n << 1)
count = count + 1
return count
n = 1469
print(solve(n)) # आउटपुट: 4
इनपुट
1469
आउटपुट
4