मान लीजिए हमारे पास एक स्ट्रिंग s है। हमें उन वर्णों को हटाना है जो पहले ही आ चुके हैं, और कम की गई स्ट्रिंग लौटानी है। इसे हल करने के लिए हम एक ऑर्डर्ड डिक्शनरी का उपयोग करेंगे ताकि वर्णों के इंसर्शन ऑर्डर को बनाए रखा जा सके। मान उन वर्णों की आवृत्ति होगी, हालांकि यहां आवृत्ति मान महत्वपूर्ण नहीं हैं। डिक्शनरी बनाने के बाद, हम केवल कुंजियों को लेकर और उन्हें जोड़कर आउटपुट स्ट्रिंग प्राप्त कर सकते हैं।
उदाहरण के लिए, यदि इनपुट s = "cabbbaadac" है, तो आउटपुट "cabd" होगा।
समाधान दृष्टिकोण
इसे हल करने के लिए हम निम्न चरणों का पालन करेंगे:
- d := एक डिक्शनरी जहां कुंजियां उनके इंसर्शन ऑर्डर द्वारा संग्रहीत होती हैं
- s में प्रत्येक वर्ण c के लिए, करें
- यदि c d में मौजूद नहीं है, तो
- d[c] := 0
- d[c] := d[c] + 1
- यदि c d में मौजूद नहीं है, तो
- उचित क्रम में कुंजियों को एक के बाद एक जोड़कर आउटपुट स्ट्रिंग बनाएं और लौटाएं
उदाहरण
बेहतर समझ के लिए निम्न कार्यान्वयन देखें:
from collections import OrderedDict
def solve(s):
d = OrderedDict()
for c in s:
if c not in d:
d[c] = 0
d[c] += 1
return ''.join(d.keys())
s = "cabbbaadac"
print(solve(s))इनपुट
"cabbbaadac"
आउटपुट
cabd