मान लीजिए कि हमारे पास एक बाइनरी स्ट्रिंग है, हम किन्हीं दो आसन्न अक्षरों को हटा सकते हैं यदि वे भिन्न हैं। अंत में, हमें सबसे छोटी स्ट्रिंग की लंबाई का पता लगाना होगा जो हम प्राप्त कर सकते हैं यदि हम इस ऑपरेशन को जितनी बार चाहें उतनी बार करने में सक्षम हैं।
इसलिए, यदि इनपुट s ="1100011" जैसा है, तो आउटपुट 1 होगा, क्योंकि "10" को हटाने के बाद हमें "10011" मिलता है, फिर "10" को हटा दें, यह "011" होगा, फिर "01" को हटा दें। ", यह 1 छोड़ दिया होगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- स्टैक:=एक नई सूची
- प्रत्येक c in s के लिए, करें
- यदि स्टैक खाली है या स्टैक का शीर्ष c के समान है, तो
- c को स्टैक में पुश करें
- अन्यथा जब स्टैक का शीर्ष c के समान नहीं है, तो
- स्टैक से पॉप तत्व
- यदि स्टैक खाली है या स्टैक का शीर्ष c के समान है, तो
- स्टैक में वापसी तत्व की गिनती
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
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