首页

源码搜藏网

首页 > 开发教程 > 软件工程 >

LeetCode:Basic Calculator

创建时间:2016-06-06 23:26  

Basic Calculator




Total Accepted: 29148 Total Submissions: 128464 Difficulty: Hard

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.

Subscribe to see which companies asked this question

Hide Tags  Stack Math Hide Similar Problems  (M) Evaluate Reverse Polish Notation (M) Basic Calculator II (M) Different Ways to Add Parentheses (H) Expression Add Operators

























java code:

public class Solution {
    public int calculate(String s) {
        
        Stack<Integer> stack = new Stack<Integer>();
        
        int result = 0;
        int sign = 1;
        int n = s.length();
        
        for(int i=0;i<n;i++) {
            
            char c = s.charAt(i);
            if(Character.isDigit(c)) {
                int sum = c-'0';
                while(i+1<n && Character.isDigit(s.charAt(i+1))) {
                    sum = 10*sum + s.charAt(i+1)-'0';
                    i++;
                }
                result += sign * sum;
            } else if(c=='+') {
                sign = 1;
            } else if(c=='-') {
                sign = -1;
            } else if(c=='(') {
                stack.push(result);
                stack.push(sign);
                sign = 1;
                result = 0;
            } else if(c==')') {
                result = result * stack.pop() + stack.pop();
            }
        }
        
        return result;
    }
}


0
0
   
上一篇:CJSON源码研究笔记
下一篇:使用xfire搭建webService服务

相关内容

热门推荐