首页 > 代码库 > [Leetcode] Evaluate Reverse Polish Notation
[Leetcode] Evaluate Reverse Polish Notation
Evaluate the value of an arithmetic expression in Reverse Polish Notation.
Valid operators are +
, -
, *
, /
. Each operand may be an integer or another expression.
Some examples:
["2", "1", "+", "3", "*"] -> ((2 + 1) * 3) -> 9 ["4", "13", "5", "/", "+"] -> (4 + (13 / 5)) -> 6
Solution:
public class Solution { public int evalRPN(String[] tokens) { if(tokens==null) return 0; Stack<Integer> s=new Stack<Integer>(); for(int i=0;i<tokens.length;++i){ if(isNumber(tokens[i])){ s.add(Integer.parseInt(tokens[i])); }else{ int param_1=s.pop(); int param_2=s.pop(); s.add(calc(param_1,param_2,tokens[i])); } } return s.pop(); } private int calc(int param_1, int param_2, String op) { // TODO Auto-generated method stub switch (op.charAt(0)) { case ‘+‘: return param_1+param_2; case ‘-‘: return param_2-param_1; case ‘*‘: return param_1*param_2; case ‘/‘: return param_2/param_1; default: return 0; } } private boolean isNumber(String s) { // TODO Auto-generated method stub try { int i_s=Integer.parseInt(s); } catch (Exception e) { // TODO: handle exception return false; } return true; }}
需要注意:
判断是不是数字:
1 private boolean isNumber(String s) { 2 // TODO Auto-generated method stub 3 try { 4 int i_s=Integer.parseInt(s); 5 } catch (Exception e) { 6 // TODO: handle exception 7 return false; 8 } 9 return true;10 }
[Leetcode] Evaluate Reverse Polish Notation
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。