zoukankan      html  css  js  c++  java
  • leetcode 224. 基本计算器

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

    字符串表达式可以包括左括号( ,右括号),加号 +,减号 -,非负整数和空格。

    解:用一个栈stack<char> op存储表达式中的运算符,一个栈stack<int> num存储表达式中的数字

     1 class Solution {
     2 public:
     3     int calculate(string s) {
     4         stack<char> op;
     5         stack<int> num;
     6         for(int i = 0; i < s.size(); ++ i)
     7         {
     8             char c = s[i];
     9             if(c == ' ') continue;
    10             if(c == '+' or c == '-' or c == '(') op.push(c);
    11             else if(c == ')')
    12             {
    13                 op.pop();
    14                 if(op.size() and op.top() != '(') calc(op, num);
    15             }
    16             else
    17             {
    18                 int cur = 0;
    19                 while(i < s.size() and isdigit(s[i])) 
    20                 {
    21                     cur = cur * 10 + (s[i] - '0');
    22                     ++ i;
    23                 }
    24                 i = i - 1;
    25                 num.push(cur);
    26                 if(op.size() and op.top() != '(') calc(op, num);
    27             }
    28         }
    29         return num.top();
    30     }
    31 
    32     void calc(stack<char> &op, stack<int> &num)
    33     {
    34         int y = num.top();
    35         num.pop();
    36         int x = num.top();
    37         num.pop();
    38         if(op.top() == '+') num.push(x + y);
    39         else num.push(x - y);
    40         op.pop();
    41     }
    42 };
  • 相关阅读:
    windows服务安装命令
    vue开发
    Quorum(NRW)算法机制简介
    SideCar模式
    Python抓取数据的几种方式
    Ms SqlServer索引的选择
    cmd添加环境变量
    好用工具网站
    Aufofac生命周期
    EF初次加载优化
  • 原文地址:https://www.cnblogs.com/xiaobaizzz/p/12132762.html
Copyright © 2011-2022 走看看