zoukankan      html  css  js  c++  java
  • 227.Basic Calculator II

         /*
          * 227.Basic Calculator II
          * 2016-6-13 by Mingyang
          * 这个题目跟I不同的地方就在于,这里是需要stack的,这里是先遇到符号,把sign等于刚才遇到的符号
          * 然后再继续加减,就是无论正负都先存入stack再说--微软onsite的题目
          */
            public int calculate1(String s) {
                int len;
                if(s==null || (len = s.length())==0) return 0;
                Stack<Integer> stack = new Stack<Integer>();
                int num = 0;
                char sign = '+';
                for(int i=0;i<len;i++){
                    if(Character.isDigit(s.charAt(i))){
                        num = num*10+s.charAt(i)-'0';
                    }
                    if((!Character.isDigit(s.charAt(i)) &&' '!=s.charAt(i)) || i==len-1){
                        if(sign=='-'){
                            stack.push(-num);
                        }
                        if(sign=='+'){
                            stack.push(num);
                        }
                        if(sign=='*'){
                            stack.push(stack.pop()*num);
                        }
                        if(sign=='/'){
                            stack.push(stack.pop()/num);
                        }
                        sign = s.charAt(i);
                        num = 0;
                    }
                }
                int re = 0;
                for(int i:stack){
                    re += i;
                }
             return re; 
            }
  • 相关阅读:
    Python对象
    python 迭代器和生成器
    python中logging日志模块详解
    学习中遇到的一些问题(杂谈)
    如何在github上搜索项目
    python闭包与装饰器
    python面试题
    selenium
    python导入自定义包
    About Me、
  • 原文地址:https://www.cnblogs.com/zmyvszk/p/5582885.html
Copyright © 2011-2022 走看看