• 227. Basic Calculator II


    一、题目

      1、审题

      

      2、分析

        给出包含 +、-、*、/ 以及空格、数字的正确的数学计算式,求出其正确答案。

    二、解答

      1、思路

        新建一个栈,存放所有的带符号的数值,其中 出现 +、- 号时作为下一个数值的符号;

        当出现 * / 号时,从栈中出栈一个数值与下一个数值进行运算后入栈。

        最终将栈中所有数值进行求和运算。

     1     public int calculate11(String s) { 
     2         
     3         int len;
     4         if(s == null || (len = s.length()) == 0)
     5             return 0;
     6         
     7         Stack<Integer> stack = new Stack<>();
     8         int num = 0;
     9         char sign = '+';
    10         for (int i = 0; i < len; i++) {
    11             char ch = s.charAt(i);
    12             if(Character.isDigit(ch)) {
    13                 num = num * 10 + ch - '0';
    14             }
    15             
    16             if((!Character.isDigit(ch) && ch != ' ') || i == len - 1) {
    17                 if(sign == '-')
    18                     stack.push(-num);
    19                 else if(sign == '+')
    20                     stack.push(num);
    21                 else if(sign == '*')
    22                     stack.push(stack.pop() * num);
    23                 else if(sign == '/')
    24                     stack.push(stack.pop() / num);
    25 
    26                 sign = s.charAt(i);
    27                 num = 0;
    28             }
    29         }
    30         
    31         int re = 0;
    32         for(int i: stack)
    33             re += i;
    34         return re;
    35     }
  • 相关阅读:
    Go反射
    Go_CSP并发模型
    Go_select
    Go计时器
    day9:vcp考试
    day8:vcp考试
    day7:vcp考试
    day6:vcp考试
    day5:vcp考试
    day4:vcp考试
  • 原文地址:https://www.cnblogs.com/skillking/p/9923782.html
Copyright © 2020-2023  润新知