मान लीजिए हमारे पास एक स्ट्रिंग s है, हम बार-बार पहले लगातार डुप्लिकेट वर्णों को हटाते हैं। हमें अंतिम स्ट्रिंग ढूंढनी है।
इसलिए, यदि इनपुट s = "xyyyxxz" जैसा है, तो आउटपुट "z" होगा, क्योंकि "yyy" पहले लगातार डुप्लिकेट वर्ण हैं जिन्हें हटा दिया जाएगा। तो हमारे पास "xxxz" होगा। फिर "xxx" को हटा दिया जाएगा और अंत में "z" बचेगा।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे −
- stack := एक नया स्टैक
- i := 0
- जब तक i < s का आकार, करें
- यदि stack खाली नहीं है और stack का शीर्ष s[i] के समान है, तो
- x := stack से अंतिम तत्व हटाएं
- जब तक i < s का आकार और x, s[i] के समान है, करें
- i := i + 1
- i := i - 1
- अन्यथा,
- s[i] को stack में पुश करें
- i := i + 1
- यदि stack खाली नहीं है और stack का शीर्ष s[i] के समान है, तो
- stack तत्वों को जोड़कर वापस करें
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें −
उदाहरण
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