কম্পিউটার টিউটোরিয়াল

জাভাস্ক্রিপ্টে স্ট্রিংয়ের ক্যারেক্টারগুলোকে ফ্রিকোয়েন্সি অনুযায়ী সোর্ট করা


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি ক্যারেক্টার স্ট্রিং একমাত্র আর্গুমেন্ট হিসেবে নেবে। ফাংশনটি একটি নতুন স্ট্রিং তৈরি করবে যেখানে যেসব ক্যারেক্টার বেশি বার এসেছে সেগুলো আগে থাকবে, তারপর কম ফ্রিকোয়েন্সি वाले।

উদাহরণ:

const str = 'free';

আউটপুট হবে:

const output = 'eefr';

আউটপুট ব্যাখ্যা:

যেহেতু 'e' দুবার এসেছে, তাই সেটি প্রথমে, তারপর 'r' এবং 'f'।

উদাহরণ

কোডটি নিচের মতো (ফ্রিকোয়েন্সি ম্যাপ + সোর্ট):

const str = 'free'; const frequencySort = (str = '') => { let map = {} for (const letter of str) { map[letter] = (map[letter] || 0) + 1; }; let res = ""; let sorted = Object.keys(map).sort((a, b) => map[b] - map[a]) for (let letter of sorted) { for (let count = 0; count < map[letter]; count++) { res += letter } } return res; }; console.log(frequencySort(str));

কোড ব্যাখ্যা:

ধাপগুলো:

  • প্রথমে লেটার কাউন্টের জন্য হ্যাশম্যাপ বানানো।

  • তারপর ম্যাপকে কাউন্ট অনুযায়ী ডেসেন্ডিং সোর্ট করা।

  • শেষে সোর্টেড লেটার দিয়ে রেজাল্ট স্ট্রিং জেনারেট করা।

আউটপুট

কনসোলে আউটপুট:

eefr

  1. জাভাস্ক্রিপ্ট রেজেক্সে \w বনাম \W পার্থক্য

  2. জাভাস্ক্রিপ্টে এস্কেপ ক্যারেক্টারস

  3. জাভাস্ক্রিপ্টে ক্যারেক্টার ফ্রিকোয়েন্সি অনুযায়ী স্ট্রিং এনকোডিং

  4. জাভাস্ক্রিপ্টে স্ট্রিংয়ের ক্যারেক্টারগুলো রিগ্রুপ করা