zoukankan      html  css  js  c++  java
  • 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     }
  • 相关阅读:
    linux 内存映射-ioremap和mmap函数
    vue 模板语法-插值的操作(12-22)
    chrome浏览器json插件
    vue初识(1-11)2020-10-27
    后盾人:JS课程第一章(11-18)2020-10-25
    博客园美化
    chrome 设置自动刷新网页
    二叉树的层次遍历
    poj 2905 双向队列(待补充)
    poj 2159 D
  • 原文地址:https://www.cnblogs.com/skillking/p/9923782.html
Copyright © 2011-2022 走看看