LeetCode224. 基本计算器

难度:困难

链接:https://leetcode-cn.com/problems/basic-calculator

题目描述:

实现一个基本的计算器来计算一个简单的字符串表达式 s 的值。

示例 1:

输入:s = “1 + 1”
输出:2

示例 2:

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

示例 3:

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

提示:

1 <= s.length <= 3 * 105
s 由数字、’+’、’-’、’(’、’)’、和 ’ ’ 组成 s 表示一个有效的表达式

class Solution {
    
    
public:
    int calculate(string s) {
    
    
        stack<int>cal;
        int n=s.length();
        int ans=0;
        int sign=1;
        cal.push(sign);
        int i=0;
        while(i<n){
    
    
            if(s[i]==' '){
    
    
                i++;
            }else if(s[i]=='+'){
    
    
                sign=cal.top();
                i++;
            }else if(s[i]=='-'){
    
    
                sign=-cal.top();
                i++;
            }
            else if(s[i]=='('){
    
    
                cal.push(sign);
                i++;
            }else if(s[i]==')'){
    
    
                cal.pop();
                i++;
            }else{
    
    
                long num=0;
                while(i<n&&s[i]>='0'&&s[i]<='9'){
    
    
                    num=num*10+s[i]-'0';
                    i++;
                }
                ans+=num*sign;
            }
        }
        return ans;
    }
};

猜你喜欢

转载自blog.csdn.net/chaokudeztt/article/details/114645153