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

150. Evaluate Reverse Polish Notation

2016-11-03 16:29 246 查看
也算比较简单的,需要一个stack放数字,每次遇到符号都把两个栈中的数字取出和符号操作,再放进去,剩下的最后一个就是答案。不过这个花时有点多。

public class Solution {

Stack<String> numbers = new Stack<>();
public int evalRPN(String[] tokens) {
int len =tokens.length;
int first = 0;
int second = 0;
String symbol = "";
int result =0;
if (len == 1)return Integer.parseInt(tokens[0]);
for (int i=0;i<len;i++){
if (tokens[i].matches("(-)*(\\d)+"))//判断是数字
numbers.add(tokens[i]);
else{
second = Integer.parseInt(numbers.pop());
//System.out.println(second);

first = Integer.parseInt(numbers.pop());
//System.out.println(first);
symbol = tokens[i];
if (symbol.equals("+")){
result = second+first;
numbers.push(String.valueOf(result));
}else if (symbol.equals("-")){
result = first - second;
numbers.push(String.valueOf(result));
}else if (symbol.equals("*")){
result = first*second ;
numbers.push(String.valueOf(result));
}else if (symbol.equals("/")){
result = first/second;
numbers.push(String.valueOf(result));
}
}
}

//System.out.println(numbers.peek());
return Integer.parseInt(numbers.pop());

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