मान लीजिए कि हमारे पास लोअरकेस वर्णमाला वर्णों की एक स्ट्रिंग है, और एक अन्य संख्या k है, तो हमें स्ट्रिंग में आवश्यक परिवर्तनों की न्यूनतम संख्या ज्ञात करनी होगी ताकि परिणामी स्ट्रिंग में कम से कम k विशिष्ट वर्ण हों। इस मामले में परिवर्तन वास्तव में एक वर्ण को किसी अन्य वर्ण में बदल रहा है।
इसलिए, यदि इनपुट s ="wxxyyzzxx", k =3 जैसा है, तो आउटपुट 1 होगा, क्योंकि हम 3 अलग-अलग वर्ण (x, y, और z) प्राप्त करने के लिए "w" अक्षर को हटा सकते हैं।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
-
गिनती :=s में प्रत्येक वर्ण का मानचित्र और उनकी आवृत्ति
-
sv :=आवृत्ति मानों की क्रमबद्ध सूची
-
उत्तर:=0
-
मैं के लिए 0 से (गिनती का आकार) की सीमा में - k-1, do
-
उत्तर:=उत्तर + sv[i]
-
-
वापसी उत्तर
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
उदाहरण
from collections import Counter class Solution: def solve(self, s, k): count = Counter(s) sv = sorted(count.values()) ans = 0 for i in range(len(count) - k): ans += sv[i] return ans ob = Solution() s = "wxxyyzzxx" k = 3 print(ob.solve(s, k))
इनपुट
"wxxyyzzxx",3
आउटपुट
1