मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s और एक मान m है। हमें यह जांचना है कि क्या स्ट्रिंग में m क्रमागत 1s या m क्रमागत 0s हैं।
उदाहरण के लिए, यदि इनपुट s = "1110111000111", m = 3 है, तो आउटपुट True होगा क्योंकि तीन क्रमागत 0s और 1s दोनों मौजूद हैं।
समाधान दृष्टिकोण
हम स्ट्रिंग को पार करते हुए क्रमागत 0s और 1s की गिनती रखते हैं। यदि कोई गिनती m तक पहुंचती है, तो True लौटाते हैं।
एल्गोरिदम चरण:
str_size = len(s),count_0 = 0,count_1 = 0i0 सेstr_size-2तक के लिए:- यदि
s[i] == '0': count_1 = 0,count_0 += 1- अन्यथा:
count_0 = 0,count_1 += 1- यदि
count_0 == mयाcount_1 == m, तो True लौटाएं - False लौटाएं
पायथन कार्यान्वयन
def solve(s, m):
str_size = len(s)
count_0 = 0
count_1 = 0
for i in range(str_size - 1):
if s[i] == '0':
count_1 = 0
count_0 += 1
else:
count_0 = 0
count_1 += 1
if count_0 == m or count_1 == m:
return True
return False
s = "1110111000111"
m = 3
print(solve(s, m)) # True
इनपुट
"1110111000111", 3
आउटपुट
True
नोट:
लूप str_size - 1 तक चलता है, लेकिन अंतिम वर्ण की जांच के लिए str_size तक चलना चाहिए। सुधारित संस्करण:
for i in range(str_size):
# ... बाकी कोड समान