Basic Calculator---Nice

原创 2015年11月20日 15:08:34

题目描述

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

题目解答

解题思路

基本思路使用栈来解决,栈里面的内容是result和sign符号的正负
有很多细节需要注意

代码实现

public class Solution {
    public int calculate(String s) {
        if(s == null || s.length() == 0)
            return -1;


        // 栈里面保存结果 和 符号的正负
        ArrayDeque<Integer> stack = new ArrayDeque<>();

        //结果 符号 数值
        int result = 0;
        int sign = 1;
        int num = 0;


        for(int i = 0; i < s.length(); i++){
            char c = s.charAt(i);
            if(c >= '0' && c <= '9'){
                //注意进位
                num = num*10 +(c-'0');
            }else if(c == '+'){
                //遇到下一个 + - 再计算
                result += (sign*num);
                sign = 1;
                num = 0;
            }else if(c == '-'){
                result += (sign*num);
                sign = -1;
                num = 0;
            }else if(c == '('){
                stack.push(result);
                stack.push(sign);
                result = 0;
                sign = 1;
            }else if(c == ')'){
                //注意 括号里的结果
                result += (sign*num);

                result *= (stack.pop());
                result += (stack.pop());
                //括号里计算为完之后要清零
                num = 0;
            }
        }

        if(num != 0)
            result += (sign*num);

        return result;
    }
}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

Learn Visual Basic 6.0 (nice manual)

  • 2007年07月29日 18:48
  • 3.54MB
  • 下载

LeetCode Basic Calculator(用栈计算表达式的值)

题意:给出一个计算表达式,只包含 +,-,(,),求计算结果 思路:用栈来实现  代码如下: public class Solution { private int cal(int nu...

224-m-Basic Calculator

有括号的运算,只有加减运算。很明显本题只考察括号匹配没有再加入乘除,否则就真是半个计算器的工程了。由于我是先写了计算器二式,所以本题也想用一次扫描就出结果。但由于有括号要考虑出栈,要考虑单个括号括的数...

第一周 leetcode 224. Basic Calculator(hard)

第一周 leetcode 224. Basic Calculator(hard)题目描述: Implement a basic calculator to evaluate a simple ex...
  • renzhff
  • renzhff
  • 2017年03月13日 20:25
  • 87

Leetcode Basic Calculator 系列

Implement a basic calculator to evaluate a simple expression string. The expression string contains ...

leetcode_Basic Calculator

题目: Implement a basic calculator to evaluate a simple expression string. The expression stri...
  • sunp823
  • sunp823
  • 2015年06月30日 23:43
  • 189

【leetcode】String——Basic Calculator II (227)

题目: Implement a basic calculator to evaluate a simple expression string. The expression string...

LeetCode No.224 Basic Calculator

LeetCode No.224 Basic Calculator

LeetCode(224) Basic Calculator

题目Implement a basic calculator to evaluate a simple expression string.The expression string may cont...
  • fly_yr
  • fly_yr
  • 2015年12月09日 14:00
  • 770

Leetcode: Basic Calculator

 Implement a basic calculator to evaluate a simple expression string. The expression string may ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Basic Calculator---Nice
举报原因:
原因补充:

(最多只允许输入30个字)