मान लीजिए हमारे पास s नामक एक स्ट्रिंग है। हमें उन सभी डुप्लीकेट कैरेक्टर्स को हटाना है जो पहले आ चुके हैं। अंतिम स्ट्रिंग में कैरेक्टर्स का वही क्रम होगा जैसे वास्तविक में है।
हम इसे ऑर्डर्ड डिक्शनरी का उपयोग करके हल कर सकते हैं ताकि कैरेक्टर्स के इंसर्शन ऑर्डर को बनाए रखा जा सके। वैल्यू उन कैरेक्टर्स की फ्रीक्वेंसी होगी, हालांकि फ्रीक्वेंसी वैल्यूज यहां महत्वपूर्ण नहीं हैं। डिक्शनरी बनाने के बाद, हम बस कीज़ ले सकते हैं और उन्हें जोड़कर आउटपुट स्ट्रिंग प्राप्त कर सकते हैं।
तो, यदि इनपुट s = "bbabcaaccdbaabababc" है, तो आउटपुट "bacd" होगा।
- 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 = "bbabcaaccdbaabababc"
print(solve(s))
इनपुट
"bbabcaaccdbaabababc"
आउटपुट
"bacd"