.net网站制作综合实训报告,深圳建站网站模板,做电影免费ppt模板下载网站,网站建设公司首选华网天下思路#xff1a;又是有消消乐的感觉#xff0c;只不过这里是遇到一个操作符号#xff0c;就消掉两个数字合并成一个新数#xff1b;所以想到用栈结构来处理#xff1b;用一个栈来放当前遍历过的数字#xff0c;当遍历遇到操作符时#xff0c;就把前面最新入栈的两个数取… 思路又是有消消乐的感觉只不过这里是遇到一个操作符号就消掉两个数字合并成一个新数所以想到用栈结构来处理用一个栈来放当前遍历过的数字当遍历遇到操作符时就把前面最新入栈的两个数取出来操作操作完的结果再放回栈内。最后栈内只剩下一个值就是最终的计算结果 class Solution {public int evalRPN(String[] tokens) {StackInteger stack new Stack();for(String str : tokens){//如果不是操作符号就把当前数字入栈等待被取出操作if(!.equals(str) !-.equals(str) !*.equals(str) !/.equals(str)){stack.push(Integer.valueOf(str));}//如果遇到操作符号就把前面入栈的两个数取出来操作操作完的结果再放回栈内else {int num1 stack.pop();int num2 stack.pop();int pushNum 0;//看例子num1,num2先后顺序理解一下先num1是后入栈的所以放在操作号后面if(.equals(str)) {pushNum num2 num1;}else if(-.equals(str)){pushNum num2 - num1;}else if(*.equals(str)){pushNum num2 * num1;}else if(/.equals(str)){pushNum num2 / num1;}//操作完的结果再放回栈内stack.push(pushNum);}}//最后栈内只剩下一个值就是最终的计算结果return stack.pop();}
}