मान लीजिए हमारे पास एक बाइनरी स्ट्रिंग s है, हम किन्हीं दो आसन्न अक्षरों को हटा सकते हैं यदि वे भिन्न हैं। अंत में, हमें सबसे छोटी स्ट्रिंग की लंबाई ढूंढनी है जो हम प्राप्त कर सकते हैं यदि हम इस संक्रिया को जितनी बार चाहें उतनी बार कर सकते हैं।
उदाहरण के लिए, यदि इनपुट है s = "1100011", तो आउटपुट होगा 1, क्योंकि "10" हटाने के बाद हमें "10011" मिलता है, फिर से "10" हटाने पर यह "011" हो जाएगा, फिर "01" हटाने पर 1 बचेगा।
इसे हল করার জন্য, আমরা নিম্নলিখিত ধাপগুলো অনুসরণ করবঃ
- stack := একটি নতুন তালিকা
- s এর প্রতিটি c জন্য, করুন
- যদি stack খালি থাকে অথবা stack-এর শীর্ষে c থাকে, তবে
- c কে stack-এ ঢুকান
- অন্যথায়, যখন stack-এর শীর্ষে c নেই, তবে
- stack- থেকে উপাদান বের করুন
- যদি stack খালি থাকে অথবা stack-এর শীর্ষে c থাকে, তবে
- 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