您的位置:首页 > 编程语言 > Lua

Leetcode-Evaluate Reverse Polish Notation-java

2014-05-19 22:07 253 查看
题目:
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


分析:

思路:利用栈暂存参数,压栈保存,遇到操作符后弹出2个栈顶元素进行操作后,将结果入栈。循环至遍历完成字符串数组为止

代码:

import java.util.Stack;
public class Solution {
public int evalRPN(String[] tokens) {
if(tokens.length == 0) return 0;
Stack<String> sop1 = new Stack<String>();
for(int i = 0; i < tokens.length; i++){
if(tokens[i].equals("+") || tokens[i].equals("-") ||
tokens[i].equals("/") || tokens[i].equals("*")){
int oper1 = Integer.parseInt(sop1.pop());
int oper2 = Integer.parseInt(sop1.pop());
int temp =  0;
switch (tokens[i]) {
case "+": temp = oper2 + oper1;
break;
case "-": temp = oper2 - oper1;
break;
case "*": temp = oper2 * oper1;
break;
case "/": temp = oper2 / oper1;
break;
}
sop1.push(Integer.toString(temp));
}else{
sop1.push(tokens[i]);
}
}
return Integer.parseInt(sop1.pop());
}
}


PS:

switch() 中可以使用字符串作为判断依据;

String to Int : Integer.parseInt(String);

由于栈操作,所以操作数2 操作符 操作数1

java.util.stack package:

Stack<E> stack name = new Stack<E>();

stack.peek();取得栈顶元素不remove;

stack.pop();remove栈顶元素并return object;

stack.empty();判栈是否为空。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: