मान लीजिए कि हमारे पास एक स्ट्रिंग s है। हमें उन सभी डुप्लिकेट वर्णों को हटाना होगा जो पहले ही सामने आ चुके हैं। अंतिम स्ट्रिंग में वास्तविक वर्णों की तरह ही वर्णों का क्रम होगा।
हम वर्णों के सम्मिलन क्रम को बनाए रखने के लिए आदेशित शब्दकोश का उपयोग करके इसे हल कर सकते हैं। मान उन वर्णों की आवृत्ति होगी, हालांकि आवृत्ति मान यहां महत्वपूर्ण नहीं हैं। शब्दकोश बनाने के बाद, हम बस चाबियां ले सकते हैं और स्ट्रिंग प्राप्त करने के लिए उनसे जुड़ सकते हैं।
इसलिए, यदि इनपुट s ="bbabcaaccdbaababacc" जैसा है, तो आउटपुट "bacd" होगा।
- d :=एक डिक्शनरी जहां चाबियों को उनके इंसर्शन ऑर्डर के अनुसार स्टोर किया जाता है
- प्रत्येक वर्ण c in s के लिए, करें
- यदि c, d में मौजूद नहीं है, तो
- डी[सी] :=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"