当前位置:首页 > 开发教程 > 软件工程 >

LeetCode:Basic Calculator

时间:2016-06-06 23:26 来源: 作者: 收藏

前言Android应用中的APK安全性一直遭人诟病,市面上充斥着各种被破解或者汉化的应用,破解者可以非常简单的通过破解工具就能对一个APK进行反编译、破解、汉化等等,这样就可以修改原有代码的逻辑、添加新代码、添加或修改资源、或者更有甚者植入病毒等等,从

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