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

來源:互聯網
上載者:User

標籤:ssi   equals   ace   cat   style   war   color   運算   while   

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;}}

 

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

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.