मान लीजिए हमारे पास लोअरकेस अक्षरों की एक स्ट्रिंग S है; एक डुप्लिकेट रिमूवल ऑपरेशन किया जाएगा। यह दो आसन्न और समान अक्षरों को चुनकर और उन्हें हटाकर किया जाएगा।
हम S से बार-बार डुप्लिकेट हटाएंगे जब तक कोई डुप्लिकेट शेष न रहे।
सभी ऐसे डुप्लिकेट रिमूवल पूरे होने के बाद स्ट्रिंग लौटाएं। यह गारंटी है कि उत्तर यूनिक है।
मान लीजिए स्ट्रिंग "abbacaca" है, तो उत्तर "caca" होगा। पहले डुप्लिकेट bb हटाएं, फिर स्ट्रिंग "aacaca" है, फिर aa हटाएं, फिर स्ट्रिंग "caca" है, फिर ऐसा कोई डुप्लिकेट नहीं है।
समाधान के चरण
- एक ऐरे st परिभाषित करें, और i := 0 इनिशियलाइज़ करें
- जब तक i < स्ट्रिंग की लंबाई
- यदि st में कुछ एलिमेंट है, और st का अंतिम एलिमेंट = st[i], तो i को 1 से बढ़ाएं, और st से अंतिम एलिमेंट डिलीट करें
- अन्यथा स्ट्रिंग[i] को st में जोड़ें, i को 1 से बढ़ाएं
- अंत में st में सभी एलिमेंट्स को स्ट्रिंग के रूप में जोड़कर लौटाएं
उदाहरण
बेहतर समझ के लिए निम्नलिखित कार्यान्वयन देखें:
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"