मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है, हम किन्हीं दो आसन्न अक्षरों को हटा सकते हैं यदि वे अलग हैं। अंत में, हमें सबसे छोटी स्ट्रिंग की लंबाई ढूंढनी है जो हम प्राप्त कर सकते हैं यदि हम इस संक्रिया को जितनी बार चाहें उतनी बार कर सकते हैं।
उदाहरण के लिए, यदि इनपुट है s = "1100011", तो आउटपुट होगा 1, क्योंकि "10" हटाने के बाद हमें "10011" मिलता है, फिर "10" हटाने पर "011", फिर "01" हटाने पर केवल 1 बचता है।
हल करने के चरण
stack :=एक नई सूची।- प्रत्येक
cके लिएsमें:- यदि
stackखाली है याstackका शीर्षcके समान है, तोcकोstackमें पुश करें। - अन्यथा जब
stackका शीर्षcके समान नहीं है, तोstackसे तत्व पॉप करें।
- यदि
stackमें तत्वों की संख्या लौटाएं।
उदाहरण
class Solution:
def solve(self, s):
stack = []
for c in s:
if not stack or stack[-1] == c:
stack.append(c)
elif stack[-1] != c:
stack.pop()
return len(stack)
ob = Solution()
print(ob.solve("1100011"))
इनपुट
"1100011"
आउटपुट
1