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