দুটি স্ট্রিং str1 এবং str2 একই রকম যদি আমরা str1 এর দুটি অক্ষর (ভিন্ন অবস্থানে) অদলবদল করতে পারি, যাতে এটি str2 এর সমান হয়। এছাড়াও, দুটি স্ট্রিং str1 এবং str2 যদি সমান হয়।
উদাহরণস্বরূপ, "টারস" এবং "ইঁদুর" একই রকম (0 এবং 2 অবস্থানে অদলবদল করা), এবং "ইঁদুর" এবং "আর্টস" একই রকম, কিন্তু "তারকা" "টারস", "ইঁদুর" বা শিল্পকলা।"
একত্রে, এগুলি সাদৃশ্য দ্বারা দুটি সংযুক্ত গোষ্ঠী গঠন করে:{"tars", "rats", "arts"} এবং {"star"}। লক্ষ্য করুন যে "টারস" এবং "আর্টস" একই গ্রুপে রয়েছে যদিও তারা একই রকম নয়৷
আনুষ্ঠানিকভাবে, প্রতিটি গোষ্ঠী এমন যে একটি শব্দ গোষ্ঠীতে থাকে যদি এবং শুধুমাত্র যদি এটি গোষ্ঠীর অন্তত একটি অন্য শব্দের মতো হয়৷
স্ট্রিংগুলির একটি তালিকা দেওয়া হয়েছে যেখানে প্রতিটি স্ট্রিং অ্যাআরআরের প্রতিটি অন্যান্য স্ট্রিংয়ের একটি অ্যানাগ্রাম। আমাদের একটি ফাংশন লিখতে হবে যা খুঁজে বের করে যে সেখানে কতগুলি গ্রুপ আছে।
উদাহরণ
নিম্নলিখিত কোড -
const arr = ["tars","rats","arts","star"]; const isSimilar = (str1, str2) => { const obj = {} let counter = 0 for(let i=0; i< str1.length; i++){ if(str1[i] !== str2[i]) { counter++ } obj[str1[i]] = str2[i] } return counter === 2? true : false } const similarStringGroup = (arr = []) => { const group = [[arr[0]]] for(let i=1; i<arr.length; i++){ let match = false for(let j=0; j<group.length; j++){ for(let k=0; k< group[j].length; k++){ const booleanMatch = isSimilar(group[j][k], arr[i]) if(booleanMatch) { group[j].push(arr[i]); match = true break; } } if(match === true) { break } } if(match === false){ group.push([arr[i]]) } } return group.length } console.log(similarStringGroup(arr));
আউটপুট
নিম্নোক্ত কনসোল আউটপুট -
2