leetcode-224:基本计算器

简介: leetcode-224:基本计算器

题目

题目连接

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

注意:不允许使用任何将字符串作为数学表达式计算的内置函数,比如 eval() 。

示例 1:

输入:s = "1 + 1"
输出:2

示例 2:

输入:s = " 2-1 + 2 "
输出:3

示例 3:

输入:s = "(1+(4+5+2)-3)+(6+8)"
输出:23

解题

方法一:栈

参考链接

class Solution {
public:
    int calculate(string s) {
        int res=0,num=0,sign=1;
        stack<int> st;
        for(char c:s){
            if(c>='0'&&c<='9'){
                num=num*10+(c-'0');
            }
            else if(c=='+'||c=='-'){
                res+=sign*num;
                num=0;
                sign=c=='+'?1:-1;
            }
            else if(c=='('){
                st.push(res);
                st.push(sign);
                res=0;
                sign=1;
            }
            else if(c==')'){
                res+=sign*num;
                num=0;
                res*=st.top();
                st.pop();
                res+=st.top();
                st.pop();
            }
        }
        res+=sign*num;
        return res;
    }
};
相关文章
|
6月前
|
Java
力扣经典150题第五十三题:基本计算器
力扣经典150题第五十三题:基本计算器
70 1
|
Java
从计算器小例子的总结思考
从计算器小例子的总结思考
131 0
|
8月前
|
存储 算法
算法题解-基本计算器2
算法题解-基本计算器2
C++ 计算器实现加减乘除
C++ 计算器实现加减乘除
126 0
|
算法 前端开发 存储
前端算法-计算器
前端算法-计算器
|
算法
算法 | 计算器系列 | 刷题打卡
算法 | 计算器系列 | 刷题打卡
142 0
算法 | 计算器系列 | 刷题打卡
函数小试题-计算器
函数小试题-计算器
115 0
|
C语言
练习11—计算器实现
练习11—计算器实现
135 0
练习11—计算器实现
|
C++
【LeetCode227】基本计算器 II(栈)
s 表示一个 有效表达式 表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1] 内
124 0
【LeetCode227】基本计算器 II(栈)