मान लीजिए कि हमारे पास एक स्ट्रिंग है, हम पहले लगातार डुप्लिकेट वर्णों को बार-बार हटाते हैं। हमें अंतिम स्ट्रिंग ढूंढनी है।
इसलिए, यदि इनपुट s ="xyyyxxz" जैसा है, तो आउटपुट "z" होगा, क्योंकि "yyy" पहले लगातार डुप्लिकेट वर्ण हैं जिन्हें हटा दिया जाएगा। तो हमारे पास "xxxz" है। फिर "xxx" को "z" के साथ समाप्त करने के लिए हटा दिया जाएगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- स्टैक:=एक नया स्टैक
- मैं :=0
- जबकि मैं
- यदि स्टैक खाली नहीं है और स्टैक का शीर्ष s[i] के समान है, तो
- x :=स्टैक से अंतिम तत्व हटाएं
- जबकि मैं
- i :=i + 1
- i :=i - 1
- यदि स्टैक खाली नहीं है और स्टैक का शीर्ष s[i] के समान है, तो
- s[i] को स्टैक में पुश करें
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
class Solution: def solve(self, s): stack = [] i = 0 while i < len(s): if len(stack) and stack[-1] == s[i]: x = stack.pop() while i < len(s) and x == s[i]: i += 1 i -= 1 else: stack.append(s[i]) i += 1 return "".join(stack) ob = Solution() s = "xyyyxxz" print(ob.solve(s))
इनपुट
"xyyyxxz"
आउटपुट
z