ধরুন সমান দৈর্ঘ্যের দুটি স্ট্রিং আছে, আমাদের ক্যারেক্টার মুছে ফেলা ছাড়া স্ট্রিং দুটিকে অ্যানাগ্রাম বানানোর জন্য ন্যূনতম পরিবর্তনের সংখ্যা বের করতে হবে। অ্যানাগ্রাম হচ্ছে দুটি স্ট্রিং যাদের ক্যারেক্টার সেট একই। ধরুন দুটি স্ট্রিং হল "HELLO" এবং "WORLD", এখানে প্রয়োজনীয় পরিবর্তন ৩টি, কারণ তিনটি ক্যারেক্টার ভিন্ন।
আইডিয়া সহজ: প্রথম স্ট্রিং-এর প্রতিটি ক্যারেক্টার-এর ফ্রিকোয়েন্সি বের করুন, তারপর دوم্য স্ট্রিং traverser করুন, যদি دوم্য স্ট্রিং-এর ক্যারেক্টারের ফ্রিকোয়েন্সি অ্যারেতে থাকে, তবে ফ্রিকোয়েন্সি কমান। যদি ফ্রিকোয়েন্সি ০-এর চেয়ে ছোট হয়, তবে চূড়ান্ত কাউন্ট ১ বাড়ান।
C++ প্রোগ্রাম উদাহরণ
#include <iostream>
using namespace std;
int countAlteration(string str1, string str2) {
int count = 0;
int frequency[26];
for (int i = 0; i < 26; i++){
frequency[i] = 0;
}
for (int i = 0; i < str1.length(); i++)
frequency[str1[i] - 'A']++;
for (int i = 0; i < str2.length(); i++){
frequency[str2[i] - 'A']--;
if (frequency[str2[i] - 'A'] < 0)
count++;
}
return count;
}
int main() {
string s1 = "HELLO", s2 = "WORLD";
cout << "Number of required alteration: " << countAlteration(s1, s2);
return 0;
}
আউটপুট
Number of required alteration: 3