একঘেয়ে স্ট্রিং বৃদ্ধি:
'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