public int evalRPN (String[] tokens) {
//通过栈来解决
if(tokens.length==0){ //后缀序列为空
return 0;
}
//1.定义栈
Stack<Integer> s = new Stack<Integer>();
int n1,n2,n;
for(int i=0;i<tokens.length;i++){
if(tokens[i].equals("+") || tokens[i].equals("-") || tokens[i].equals("*") || tokens[i].equals("/") ){//1.数字出栈,计算结果进栈。栈只的元素个数>=2,才可进行出栈操作
if(tokens[i].equals("+") && s.size()>1){
n1 = s.pop();
n2 = s.pop();
n=n1+n2;
s.push(n);
}
else if(tokens[i].equals("-") && s.size()>1){
n1 = s.pop();
n2 = s.pop();
n=n2-n1;
s.push(n);
}else if(tokens[i].equals("*") && s.size()>1){
n1 = s.pop();
n2 = s.pop();
n=n1*n2;
s.push(n);
}else if(tokens[i].equals("/") && s.size()>1){
n1 = s.pop();
n2 = s.pop();
n=n2/n1;
s.push(n);
}else{
return 0;
}
}else{//2.数字。进栈
s.push(Integer.parseInt(tokens[i]));
}
}//for
return s.pop();
}
leetcode------计算逆波兰式(后缀表达式)的值
最新推荐文章于 2022-08-25 14:59:41 发布