Computer >> Máy Tính >  >> Lập trình >> Javascript

Xóa dấu ngoặc đơn khỏi các biểu thức toán học trong JavaScript

Vấn đề

Chúng tôi được yêu cầu viết một hàm JavaScript lấy một chuỗi các ký tự mathmaticalexpressions, str, làm đối số đầu tiên và duy nhất.

Nhiệm vụ của hàm của chúng ta là xóa dấu ngoặc đơn khỏi biểu thức, giữ nguyên các phép toán và toán hạng.

Ví dụ:nếu đầu vào của hàm là -

Đầu vào

const str = 'u-(v-w-(x+y))-z';

Đầu ra

const output = 'u-v+w+x+y-z';

Ví dụ

Sau đây là mã -

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 ra

u-v+w+x+y-z