एकरस रूप से बढ़ती हुई स्ट्रिंग:
'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