समस्या
हमें एक JavaScript फ़ंक्शन लिखना है जो गणितीय अभिव्यक्तियों की एक स्ट्रिंग, str, को पहला और एकमात्र तर्क के रूप में लेता है।
हमारे फ़ंक्शन का कार्य अभिव्यक्ति से पैरेंथेसिस को हटाना है जबकि ऑपरेशन और ऑपरेंड को उनकी जगह पर रखना है।
उदाहरण के लिए, यदि फ़ंक्शन का इनपुट है -
इनपुट
const str = 'u-(v-w-(x+y))-z';
आउटपुट
const output = 'u-v+w+x+y-z';
उदाहरण
निम्नलिखित कोड है -
const str = 'u-(v-w-(x+y))-z';
const removeParentheses = (str = '') => {
let stack = [];
let lastSign = '+';
for (let char of str) {
if (char === '(' || char === ')') {
lastSign = stack[stack.length - 1] || '+';
} else if (char === '+') {
if (stack[stack.length - 1] !== '-' && stack[stack.length - 1] !== '+') {
stack.push(lastSign);
}
} else if (char === '-') {
if (lastSign === '-') {
if (stack[stack.length - 1] === '-') stack.pop();
stack.push('+');
} else {
if (stack[stack.length - 1] === '+') stack.pop();
stack.push('-');
}
} else {
stack.push(char);
}
}
return stack.join('').replace(/^\+/, '');
};
console.log(removeParentheses(str));
आउटपुट
u-v+w+x+y-z