当前位置:   article > 正文

227. 基本计算器 II_parsenum(s, i);

parsenum(s, i);
  1. 基本计算器 II
    给你一个字符串表达式 s ,请你实现一个基本计算器来计算并返回它的值。

整数除法仅保留整数部分。

示例 1:

输入:s = "3+2*2"
输出:7
  • 1
  • 2

示例 2:

输入:s = " 3/2 "
输出:1
  • 1
  • 2

示例 3:

输入:s = " 3+5 / 2 "
输出:5
  • 1
  • 2
class Solution {
public:
   int calculate(string s) {
       int i = 0;
       return help(s, i);    
   }

   int help(string &s, int &i){
       int left = 0, right = 0;
       char op = '+';
       while(i < s.size()){
           if(s[i] != ' '){
               long n = parse_num(s, i);
               switch(op){
                   case '+' : 
                       left += right;
                       right = n;
                       break;
                   case '-' :
                       left += right;
                       right = -n;
                       break;
                   case '*' :
                       right *= n;
                       break;
                   case '/' :
                       right /= n;
                       break;
               }
               if(i < s.size()){
                   op = s[i];
               }
           }
           ++i;
       }
       return left + right;
   }

   long parse_num(string &s, int &i){
       long n = 0;
       while(i < s.size() && isdigit(s[i])){
           n = n * 10 + (s[i++] - '0');
       }
       return n;
   }


};
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48

提示:

1 <= s.length <= 3 * 105
s 由整数和算符 (’+’, ‘-’, ‘*’, ‘/’) 组成,中间由一些空格隔开
s 表示一个 有效表达式
表达式中的所有整数都是非负整数,且在范围 [0, 231 - 1] 内
题目数据保证答案是一个 32-bit 整数

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/848205
推荐阅读
相关标签
  

闽ICP备14008679号