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 Subscribe to see which companies asked this question.
题意:求逆波兰表达式的结果
public class Solution { public int isopnd(String s){ if(s.length()!=1)return 0; char c=s.charAt(0); switch(c){ case ‘+‘: return 1; case ‘-‘: return 2; case ‘*‘: return 3; case ‘/‘: return 4; default:return 0; } } public int evalRPN(String[] tokens) { if(tokens.length==1) return Integer.valueOf(tokens[0]); Stack<Integer> stack=new Stack<Integer>(); int ans=0; for(String tk : tokens){ int op=isopnd(tk); if(op!=0){ int a=stack.peek(); stack.pop(); int b=stack.peek(); stack.pop(); if(op==1){ ans=a+b; } if(op==2){ ans=b-a; } if(op==3){ ans=a*b; } if(op==4){ ans=b/a; } System.out.println(ans); stack.push(ans); }else{ stack.push(Integer.valueOf(tk)); } } return ans; } }
PS:用栈。第一次调用栈。遇到数字,入栈,遇到运算符,出栈俩数字做计算,结果再入栈。
时间: 2024-11-16 05:50:57