দুটি স্ট্রিং 'a' এবং 'b' দেওয়া থাকলে, সেগুলো অ্যানাগ্রাম (anagram) কিনা যাচাই করতে হবে। দুটি স্ট্রিং অ্যানাগ্রাম হলে তাদের সব ক্যারেক্টার ও ফ্রিকোয়েন্সি সমান হবে।
ইনপুট-১
a = "anagram", b = "gnarama"
আউটপুট
True
ইনপুট-২
a = "programmer", b = "mprogretmrqp"
আউটপুট
False
সমাধানের পদ্ধতি
- দুটি স্ট্রিং ইনপুট নিন।
- লেন্থ ভিন্ন হলে সরাসরি
falseরিটার্ন করুন। unordered_map<char,int>দিয়ে প্রথম স্ট্রিংয়ের ক্যারেক্টার ফ্রিকোয়েন্সি বাড়ান এবং দ্বিতীয় স্ট্রিংয়ের কমান।- ম্যাপে যেকোনো নন-জিরো ভ্যালু থাকলে
false, অন্যথায়true।
উদাহরণ
#include <bits/stdc++.h>
using namespace std;
bool checkAnagram(string a, string b) {
if (a.length() != b.length()) return false;
unordered_map<char,int> mp;
for (int i = 0; i < a.size(); i++) {
mp[a[i]]++;
mp[b[i]]--;
}
for (auto it : mp)
if (it.second) return false;
return true;
}
int main() {
string a = "anagram", b = "gnarama";
cout << checkAnagram(a,b) << endl; // 1 (True)
return 0;
}
আউটপুট
1