কম্পিউটার

জাভাস্ক্রিপ্টে ফ্রিকোয়েন্সি অনুসারে স্ট্রিং অক্ষর বাছাই করা


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা অক্ষরের স্ট্রিংকে একমাত্র যুক্তি হিসাবে গ্রহণ করে৷

আমাদের ফাংশনটি তৈরি করা উচিত এবং মূল স্ট্রিংয়ের উপর ভিত্তি করে একটি নতুন স্ট্রিং তৈরি করা উচিত যাতে বেশির ভাগ বার প্রদর্শিত অক্ষরগুলিকে প্রথমে ক্রমবর্ধমান ফ্রিকোয়েন্সি সহ সংখ্যা দ্বারা অনুসরণ করা হয়৷

উদাহরণস্বরূপ, যদি ফাংশনে ইনপুট হয় −

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. জাভাস্ক্রিপ্টে একটি স্ট্রিংয়ের অক্ষরগুলিকে পুনরায় গোষ্ঠীবদ্ধ করা