অ্যানাগ্রাম (Anagrams)
দুটি স্ট্রিং অ্যানাগ্রাম যদি একটির ক্যারেক্টার রি-অর্ডার করলে অন্যটি বানানো যায়।
উদাহরণ: 'hello' এবং 'lolhe' → অ্যানাগ্রাম।
সমাধান
const str1 = 'hello';
const str2 = 'lolhe';
const charCount = string => {
const table = {};
for (let char of string.replace(/\W/g, "").toLowerCase()) {
table[char] = table[char] + 1 || 1;
}
return table;
};
const anagrams = (stringA, stringB) => {
const charCountA = charCount(stringA);
const charCountB = charCount(stringB);
if (Object.keys(charCountA).length !== Object.keys(charCountB).length)
return false;
for (let char in charCountA)
if (charCountA[char] !== charCountB[char])
return false;
return true;
};
console.log(anagrams(str1, str2)); // true
আউটপুট
true
ব্যাখ্যা
charCountহেল্পার ফাংশন: নন-ওয়ার্ড ক্যারেক্টার রিমুভ করে (/\W/g), লোয়ারকেস করে, ফ্রিকোয়েন্সি ম্যাপ বানায়।- দুই ম্যাপের কী সংখ্যা এবং প্রতিটি কীয়ের কাউন্ট তুলনা করা হয়।
- টাইম কমপ্লেক্সিটি: O(n + m)।