ধরা যাক s নামক একটি ছোট হাতের অ্যালফাবেট স্ট্রিং এবং একটি সংখ্যা k আছে। স্ট্রিং-এ ন্যূনতম কতগুলো ক্যারেক্টার পরিবর্তন করলে সর্বোচ্চ kটি স্বতন্ত্র ক্যারেক্টার থাকে তা বের করতে হবে।
উদাহরণ: s = "wxxyyzzxx", k = 3 হলে আউটপুট 1, কারণ 'w' বাদ দিলে ৩টি স্বতন্ত্র ক্যারেক্টার (x, y, z) থাকে।
সমাধানের ধাপসমূহ
- count := s-এ প্রতিটি ক্যারেক্টারের ফ্রিকোয়েন্সি ম্যাপ (Counter)
- sv := ফ্রিকোয়েন্সি মানগুলোর সর্টেড তালিকা
- ans := 0
- i = 0 থেকে len(count) - k - 1 পর্যন্ত: ans += sv[i]
- ans ফেরত দিন।
উদাহরণ কোড
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