मान लीजिए कि हमारे पास लोअरकेस अक्षरों का एक स्ट्रिंग S है; डुप्लिकेट हटाने का ऑपरेशन किया जाएगा। यह दो आसन्न और समान अक्षरों को चुनकर और उन्हें हटाकर किया जाएगा।
हम बार-बार S से डुप्लीकेट हटा देंगे जब तक कि कोई डुप्लीकेट न बचे।
इस तरह के सभी डुप्लिकेट निष्कासन पूर्ण होने के बाद स्ट्रिंग वापस करें। यह गारंटी है कि उत्तर अद्वितीय है।
मान लीजिए कि स्ट्रिंग "अब्बाकाका" है, तो उत्तर "काका" होगा। पहले डुप्लिकेट बीबी हटाएं, फिर स्ट्रिंग "आकाका" है, फिर आ को हटा दें, फिर स्ट्रिंग "काका" है, फिर ऐसा कोई डुप्लिकेट नहीं है।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- एक सरणी सेंट परिभाषित करें, और मैं प्रारंभ करें:=0
- जबकि मैं <स्ट्रिंग की लंबाई -
- यदि st में कुछ तत्व है, और st =st[i] का अंतिम तत्व है, तो i को 1 से बढ़ाएँ और st से अंतिम तत्व को हटा दें
- अन्यथा स्ट्रिंग [i] को सेंट में जोड़ें, i को 1 से बढ़ाएं
- आखिरकार सेंट में सभी तत्वों को एक स्ट्रिंग के रूप में शामिल करें और वापस लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
class Solution(object): def removeDuplicates(self, S): st = [] i = 0 while i < len(S): if len(st)!=0 and st[-1]==S[i]: i+=1 st.pop(-1) else: st.append(S[i]) i+=1 return "".join(i for i in st) ob1 = Solution() print(ob1.removeDuplicates("abbacaca"))
इनपुट
"abbacaca"
आउटपुट
"caca"