C ++中的基本计算器

假设我们要创建一个基本计算器,它将找到基本表达式结果。该表达式可以包含左括号和右括号,加号或减号以及空格。

因此,如果字符串类似于“ 5 + 2-3”,则结果将为7

为了解决这个问题,我们将遵循以下步骤-

  • ret:= 0,符号:= 1,num:= 0,n:= s的大小

  • 定义一个堆栈st

  • 用于初始化i:= 0,当i <n时,将i增加1做-

    • ret = ret +(符号* num),符号:=-1,num:= 0

    • ret = ret +(符号*数字),符号:= 1,数字:= 0

    • ret = ret +(符号*数字),符号:= 1,数字:= 0

    • ret = ret * st的顶部元素

    • 从st删除项目

    • ret = ret + st的顶部元素

    • 从st删除项目

    • ret = ret +(符号*数字)

    • 将ret插入st

    • 将符号插入st

    • ret:= 0,符号:= 1,num:= 0

    • num = num * 10

    • num = num +(x-'0')

    • 定义一个数组x = s,其大小为i

    • 如果x> ='0'并且x <='9',则,

    • 否则,当x与'('相同时,则-

    • 否则,当x与')'相同时,则-

    • 否则,当x与'+'相同时,则-

    • 否则,当x与'-'相同时,则-

    • 如果num不为零,则

      • ret = ret +符号* num

    • 返回ret

    例 

    让我们看下面的实现以更好地理解-

    #include <bits/stdc++.h>
    using namespace std;
    class Solution {
       public:
       int calculate(string s) {
          int ret = 0;
          int sign = 1;
          int num = 0;
          int n = s.size();
          stack <int> st;
          for(int i = 0; i < n; ++i){
             char x = s[i];
             if(x >= '0' && x <= '9'){
                num *= 10;
                num += (x - '0');
             }
             else if(x == '('){
                ret += (sign * num);
                st.push(ret);
                st.push(sign);
                ret = 0;
                sign = 1;
                num = 0;
             }
             else if(x == ')'){
                ret += (sign * num);
                sign = 1;
                num = 0;
                ret *= st.top();
                st.pop();
                ret += st.top();
                st.pop();
             }
             else if(x == '+'){
                ret += (sign * num);
                sign = 1;
                num = 0;
             }
             else if(x == '-'){
                ret += (sign * num);
                sign = -1;
                num = 0;
             }
          }
          if(num){
             ret += sign * num;
          }
          return ret;
       }
    };
    main(){
       Solution ob;
       cout << (ob.calculate("5 + 2 - 3"));
    }

    输入值

    "5 + 2 - 3"

    输出结果

    4