zoukankan      html  css  js  c++  java
  • leetcode 224. Basic Calculator ---------- java

    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.

    public class Solution {
       public int calculate(String s) {
    
            Stack<Integer> stack = new Stack<Integer>();
            int result = 0;
            int number = 0;
            int sign = 1;
            for(int i = 0; i < s.length(); i++){
                char c = s.charAt(i);
                if(Character.isDigit(c)){
                    number = 10 * number + (int)(c - '0');
                }else if(c == '+'){
                    result += sign * number;
                    number = 0;
                    sign = 1;
                }else if(c == '-'){
                    result += sign * number;
                    number = 0;
                    sign = -1;
                }else if(c == '('){
                    //we push the result first, then sign;
                    stack.push(result);
                    stack.push(sign);
                    //reset the sign and result for the value in the parenthesis
                    sign = 1;
                    result = 0;
                }else if(c == ')'){
                    result += sign * number;
                    number = 0;
                    result *= stack.pop();    //stack.pop() is the sign before the parenthesis
                    result += stack.pop();   //stack.pop() now is the result calculated before the parenthesis
    
                }
            }
            if(number != 0) result += sign * number;
            return result;
        }
    }
  • 相关阅读:
    Linux curl命令添加参数
    postman无限循环执行接口用例
    xshell用root用户登录ubuntu
    centos5 yum源配置
    移动端布局方案
    vue + store2实现未提交信息自动保存
    sublime text里的terminal
    20180204
    2018.1.3 interview
    http协议
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/7132819.html
Copyright © 2011-2022 走看看