leetcode 227. Basic Calculator II ---------- java

Implement a basic calculator to evaluate a simple expression string.

The expression string contains only non-negative integers, +-*/ operators and empty spaces . The integer division should truncate toward zero.

You may assume that the given expression is always valid.

Some examples:

"3+2*2" = 7
" 3/2 " = 1
" 3+5 / 2 " = 5

带有+、-、*、/的运算。

与上一题累死,用栈做。

public class Solution {
    public int calculate(String s) {
        Stack<String> stack = new Stack();
        int start = 0;
        int num = 0;
        while (start < s.length()){
            char ch = s.charAt(start);
            if (Character.isDigit(ch)){
                num = num * 10 + ch - ‘0‘;
            } else if(ch == ‘ ‘ ){

            } else {
                if (!stack.isEmpty() && (stack.peek().equals("*") || stack.peek().equals("/"))){
                    String str = stack.pop();
                    int num2 = Integer.valueOf(stack.pop());
                    if (str.equals("*")){
                        num = num2 * num;
                    } else {
                        num = num2 / num;
                    }
                }
                stack.push(String.valueOf(num));
                stack.push(String.valueOf(ch));
                num = 0;
            }
            start++;
        }
        if (!stack.isEmpty() && (stack.peek().equals("*") || stack.peek().equals("/"))){
            String str = stack.pop();
            int num2 = Integer.valueOf(stack.pop());
            if (str.equals("*")){
                num = num * num2;
            } else {
                num = num2 / num;
            }
        }
        if (!stack.isEmpty() && stack.pop().equals("-")){
            num = -num;
        }
        while (stack.size() > 1){
            int num1 = Integer.valueOf(stack.pop());
            if (stack.pop().equals("-")){
                num1 = -num1;
            }
            num = num + num1;
        }
        if (!stack.isEmpty())
            return Integer.valueOf(stack.pop()) + num;
        else {
            return num;
        }
    }
}
public class Solution {
public int calculate(String s) {
    int len;
    if(s==null || (len = s.length())==0) return 0;
    Stack<Integer> stack = new Stack<Integer>();
    int num = 0;
    char sign = ‘+‘;
    for(int i=0;i<len;i++){
        if(Character.isDigit(s.charAt(i))){
            num = num*10+s.charAt(i)-‘0‘;
        }
        if((!Character.isDigit(s.charAt(i)) &&‘ ‘!=s.charAt(i)) || i==len-1){
            if(sign==‘-‘){
                stack.push(-num);
            }
            if(sign==‘+‘){
                stack.push(num);
            }
            if(sign==‘*‘){
                stack.push(stack.pop()*num);
            }
            if(sign==‘/‘){
                stack.push(stack.pop()/num);
            }
            sign = s.charAt(i);
            num = 0;
        }
    }

    int re = 0;
    for(int i:stack){
        re += i;
    }
    return re;
}
}
时间: 2024-10-18 15:48:15

leetcode 227. Basic Calculator II ---------- java的相关文章

Leetcode 227. Basic Calculator II JAVA语言

Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. You may assume that the given ex

Java for LeetCode 227 Basic Calculator II

Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. You may assume that the given ex

[LeetCode#227] Basic Calculator II

Problem: Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. You may assume that the

【LeetCode】227. Basic Calculator II

Basic Calculator II Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. You may assu

LeetCode OJ Basic Calculator II

Basic Calculator II 题目 思路 和这个一样:Basic Calculator I 代码 class ExpressionTransformation { public: string trans_to_postfix_expression_to_s(string); // 将得到的表达式转化为后缀表达式 long long int calculate_from_postfix_expression(); // 根据后缀表达式计算值 private: vector<string

227. Basic Calculator II

题目: Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. You may assume that the give

【Leetcode】Basic Calculator II

题目链接:https://leetcode.com/problems/basic-calculator-ii/ 题目: Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division s

[leedcode 227] Basic Calculator II

Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. You may assume that the given ex

227. Basic Calculator II 无括号版本计算器

[抄题]: Implement a basic calculator to evaluate a simple expression string. The expression string contains only non-negative integers, +, -, *, / operators and empty spaces . The integer division should truncate toward zero. Example 1: Input: "3+2*2&q