美文网首页
js 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并

js 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并

作者: 泪滴在琴上 | 来源:发表于2024-01-30 21:27 被阅读0次

示例 1:
输入:s = "3+2*2"
输出:7
示例 2:
输入:s = " 3/2 "
输出:1
示例 3:
输入:s = " 3+5 / 2 "
输出:5
示例 4:
输入:s = " 1-1+1 "
输出:1
实现:

var calculate = function(s) {
    // 1、去除空格
    s = s.replace(/\s/g,'');
    // 2、定义正则匹配
    let reg  = /(\d+|\+|\-|\*|\/)/g;
    let record = s.match(reg);
    let numStack = [],opStack = [];
    function calcFunc() {
        let num2 = parseInt(numStack.pop());
        let num1 = parseInt(numStack.pop());
        let op = opStack.pop();
        if(op=='+'){
            numStack.push(num1+num2)
        }else if(op=='-'){
            numStack.push(num1-num2)
        }else if(op=='*'){
            numStack.push(num1*num2)
        }else if(op=='/'){
            numStack.push(Math.floor(num1/num2))
        }
    } 
    for(let i=0;i<record.length;i++){
        let item = record[i];
        if(item=='+'||item=='-'){
            while(opStack.length>0&&(opStack[opStack.length-1]=='*'||opStack[opStack.length-1]=='/')){
                calcFunc()
            }
            while(opStack.length>0){
                calcFunc()
            }
            opStack.push(item)
        }else if(item=='*'||item=='/'){
            while(opStack.length>0&&(opStack[opStack.length-1]=='*'||opStack[opStack.length-1]=='/')){
                calcFunc()
            }
            opStack.push(item)
        }else{
            numStack.push(item)
        }
    }
    while(opStack.length>0){
        calcFunc();
    }
    return numStack.pop();
};

相关文章

  • IOS 算法(困难篇) ----- 基本计算器

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 1 <= s.length <= 3 * ...

  • IOS 算法(中级篇) ----- 基本计算器II

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。 1 <= s.le...

  • 227. 基本计算器 II

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。输入:s = "3+...

  • 【leetcode】基本计算器II C++/Go(栈)

    问题描述 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 ...

  • LeetCode 基本计算器 II

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 示例 1: 示例...

  • 2【中等】基本计算器 II

    【题目】给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。整数除法仅保留整数部分。【示例】输入...

  • 227. Basic Calculator II

    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 使用栈 时间复杂...

  • 224. 基本计算器

    实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。输入:s = "1 + 1"输出:2输入:s = "(...

  • 224. 基本计算器

    实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,...

  • 2020-06-10(补充记录)基本计算器

    题目 实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式可以包含左括号 ( ,右括号 ),加号 ...

网友评论

      本文标题:js 给你一个字符串表达式 s ,请你实现一个基本计算器来计算并

      本文链接:https://www.haomeiwen.com/subject/gypiodtx.html