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

【LeetCode】Evaluate Reverse Polish Notation

2014-09-26 16:25 387 查看
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


1. stack的应用,可以使用vector实现一个stack,涉及到vector的使用,http://www.blogjava.net/Yang/archive/2006/01/05/26662.html

2.判断String是否为数字:(1)使用正则表达式 (2)通过Integer.parseInt( )抛异常来判断

import java.util.*;
public class Solution {
public static int evalRPN(String[] tokens) {
Vector<Integer> stack = new Vector<Integer>();
int len = tokens.length;
for(int i = 0;i< len;i++)
{
boolean isNum = tokens[i].matches("-?[0-9]+");
if(isNum)
{
int tmp = Integer.parseInt(tokens[i]);
stack.addElement(tmp);
}
else
{
int length = stack.size();
int tmp1 = stack.elementAt(length-2);
int tmp2 = stack.elementAt(length-1);
stack.removeElementAt(length-1);
stack.removeElementAt(length-2);
if(tokens[i].equals("+"))
{

int sum = tmp1 + tmp2;
stack.addElement(sum);
}
else if(tokens[i].equals("-"))
{
int sub = tmp1 - tmp2;
stack.addElement(sub);
}
else if(tokens[i].equals("*"))
{
int mul = tmp1 * tmp2;
stack.addElement(mul);
}
else if(tokens[i].equals("/"))
{
int dive = tmp1/tmp2;
stack.addElement(dive);
}
else
{

}

}

}
int result = stack.elementAt(0);
return result;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: