কম্পিউটার

জাভাস্ক্রিপ্টে এর আকার কমাতে এনকোডিং স্ট্রিং


সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা অক্ষরের একটি স্ট্রিং, str, একমাত্র যুক্তি হিসাবে নেয়। আমাদের ফাংশনের ইনপুট স্ট্রিংকে এনকোড করা উচিত এবং আসল স্ট্রিংয়ের সাথে এর আকার তুলনা করা উচিত এবং আকারে ছোট স্ট্রিংটি ফিরিয়ে দেওয়া উচিত।

একটি নির্দিষ্ট স্ট্রিং এনকোড করার নিয়ম হল −

  • n[s], যেখানে বর্গাকার বন্ধনীর ভিতরে s ঠিক k বার পুনরাবৃত্তি করা হচ্ছে।

উদাহরণস্বরূপ, ddd 3[d] এ এনকোড করা যেতে পারে কিন্তু 3[d] এর দৈর্ঘ্য 4 যেখানে ddd মাত্র 3 অক্ষর দীর্ঘ তাই আমাদের ফাংশনটি অবশেষে ddd ফেরত দেওয়া উচিত।

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

const str = 'aabcaabcd';

তারপর আউটপুট −

হওয়া উচিত
const output = '2[aabc]d';

উদাহরণ

এর জন্য কোড হবে −

const str = 'aabcaabcd';
function encode(s) {
   const { length } = s;
   const dp = Array(length).fill([]);
   dp.forEach((el, ind) => {
      dp[ind] = Array(length).fill(null);
   });
   for(let l = 1; l <= length; l++){
      for(let i = 0; i + l <= length; i++){
         let j = i + l - 1;
         dp[i][j] = s.substring(i, j + 1);
         for (let k = i; k < j ; k ++) {
            let acc = dp[i][k] + dp[k + 1][j];
            if (acc.length < dp[i][j].length) {
               dp[i][j] = acc;
            }
         }
         let sub = s.substring(i, j + 1);
         let double = sub + sub;
         let cut = double.indexOf(sub, 1);
         if (cut != -1 && cut < sub.length) {
            let acc = sub.length / cut + "[" + dp[i][i + cut - 1] +"]";
            if (acc.length < dp[i][j].length) {
               dp[i][j] = acc;
            }
         }
      }
   }
   let res = dp[0][dp.length - 1];
   return res;
}
console.log(encode(str));

আউটপুট

এবং কনসোলে আউটপুট হবে −

2[aabc]d

  1. জাভাস্ক্রিপ্টে একটি নির্দিষ্ট দৈর্ঘ্য পর্যন্ত স্ট্রিং সীমাবদ্ধ করা

  2. জাভাস্ক্রিপ্ট ব্যবহার করে একটি স্ট্রিং এবং এর দৈর্ঘ্যে দীর্ঘতম ধারাবাহিক পুনরাবৃত্তি সহ অক্ষরটি সন্ধান করা

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

  4. পাইথনে দৈর্ঘ্য এনকোডিং চালান