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;
        }
    }
  • 相关阅读:
    人脸关键点检测之hourglass网络原理
    语义分割deeplabv3原理与流程梳理
    Python通过pycuda使用CUDA扩展
    利用curl去hack他人博客
    关于博主
    题解 P1083 【借教室】
    题解 CF413E 【Maze 2D】
    My Blog访客数
    Ubunut16.04 deb包的安装与卸载
    论Github Desktop
  • 原文地址:https://www.cnblogs.com/xiaoba1203/p/7132819.html
Copyright © 2011-2022 走看看