কম্পিউটার

জাভাস্ক্রিপ্ট ব্যবহার করে একটি বাইনারি স্ট্রিংয়ে ন্যূনতম ফ্লিপ খোঁজা


একঘেয়ে স্ট্রিং বৃদ্ধি:

'0' এবং '1'-এর একটি স্ট্রিং একঘেয়েভাবে বৃদ্ধি পাচ্ছে যদি এতে '0' (সম্ভবত 0) এর কিছু সংখ্যা থাকে, তারপরে '1'-এর কিছু সংখ্যা (সম্ভবত 0।)

সমস্যা

আমাদের একটি জাভাস্ক্রিপ্ট ফাংশন লিখতে হবে যা একটি বাইনারি স্ট্রিং, str, প্রথম এবং একমাত্র যুক্তি হিসাবে নেয়৷

আমরা স্ট্রিং-এ উপস্থিত যেকোনো '0' থেকে '1' বা যেকোনো '1' থেকে '0' ফ্লিপ করতে পারি। S একঘেয়েভাবে বাড়ানোর জন্য আমাদের ফাংশনটি ন্যূনতম সংখ্যক ফ্লিপ ফেরত দেবে।

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

ইনপুট

const str = '00110';

আউটপুট

const output = 1;

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

কারণ আমরা যদি শেষ '0' থেকে '1' ফ্লিপ করি, তাহলে আমাদের কাছে '00111' স্ট্রিং বাকি থাকবে।

উদাহরণ

const str = '00110';
const countFlips = (str = '') => {
   const map = {}
   const helper = (index, prev) => {
      map[index] = map[index] || {}
      if (map[index][prev] !== undefined) {
         return map[index][prev]
      }
      if (index >= str.length) {
         return 0
      }
      if (prev === '0') {
         if (str[index] === '0') {
            map[index][prev] = Math.min(helper(index + 1, '0'), helper(index + 1, '1') + 1)
      } else {
         map[index][prev] = Math.min(helper(index + 1, '1'), helper(index + 1, '0') + 1)
      }
      } else if (str[index] === '0') {
         map[index][prev] = helper(index + 1, '1') + 1
      } else {
         map[index][prev] = helper(index + 1, '1')
      }
         return map[index][prev]
      }
   return helper(0, '0')
};
console.log(countFlips(str));

আউটপুট

1

  1. জাভাস্ক্রিপ্ট ব্যবহার করে একটি অ্যারের মধ্যে একমাত্র অনন্য স্ট্রিং খোঁজা

  2. জাভাস্ক্রিপ্ট ব্যবহার করে একটি স্ট্রিং-এ দীর্ঘতম স্বরবর্ণ সাবস্ট্রিং-এর দৈর্ঘ্য খুঁজে বের করা

  3. জাভাস্ক্রিপ্ট ব্যবহার করে অন্য স্ট্রিং-এ একটি অক্ষরের দীর্ঘতম ধারাবাহিক চেহারা খোঁজা

  4. জাভাস্ক্রিপ্ট ব্যবহার করে বাইনারি স্ট্রিং বাইনারি স্ট্রিং বাছাই করা হচ্ছে যার দশমিক মান রয়েছে