• Basic Calculator


    Implement a basic calculator to evaluate a simple expression string.

    The expression string may contain open ( and closing parentheses ), the plus + or minus sign -, non-negative integers and empty spaces .

    You may assume that the given expression is always valid.

    Some examples:

    "1 + 1" = 2
    " 2-1 + 2 " = 3
    "(1+(4+5+2)-3)+(6+8)" = 23
    

    Note: Do not use the eval built-in library function.

     1 class Solution {
     2 public:
     3     int calculate(string s) {
     4         if (s.empty())
     5             return 0;
     6         int res = 0;
     7         int sign = 1;
     8         stack<int> stack;
     9         int len = int(s.length());
    10         for (int i = 0; i < len; i++) {
    11             char c = s[i];
    12             if (isdigit(c)) {
    13                 int cur = c - '0';
    14                 while (i + 1 < len && isdigit(s[i + 1])) {
    15                     cur = cur * 10 + s[i+1] - '0';
    16                     i++;
    17                 }
    18                 res += cur * sign;
    19             } else if (c == '+') {
    20                 sign = 1;
    21             } else if (c == '-') {
    22                 sign = -1;
    23             } else if (c == '(') {
    24                 stack.push(res);
    25                 stack.push(sign);
    26                 res = 0;
    27                 sign = 1;
    28             } else if (c == ')') {
    29                 res = stack.top() * res;
    30                 stack.pop();
    31                 res += stack.top();
    32                 stack.pop();
    33                 sign = 1;
    34             }
    35         }
    36         return res;
    37     }
    38 };
  • 相关阅读:
    Vue cmd命令操作
    迭代器和生成器
    10-外键的变种 三种关系
    09-完整性约束
    08-数据类型(2)
    07-数据类型
    06-表的操作
    05-库的操作
    04-基本的mysql语句
    03-MySql安装和基本管理
  • 原文地址:https://www.cnblogs.com/wxquare/p/5059424.html
Copyright © 2020-2023  润新知