问题描述
后缀表达式的另外一个名字就是逆波兰表达式
- 逆波兰表达式求值 - 力扣(LeetCode)
题目分析:
题目给的是一个数组
按照实例1来举例:
借助一个栈:
通过i下标遍历数组
根据提示,遍历的如果是数字就放到栈里面,如果是运算符就开始运算
问题:
1.如何判断数组里面是数组还是运算符?
2.如何把一个数字字符串转换为一个整数?
代码步骤
第一步:
遍历数组:
第二步:
每一个元素是一个字符串,获取i下标的val值
第三步:
给定条件能判断val值是运算符还是其他的值
第四步:
进行判断
第五步:
创建栈
第六步:
不是运算符,把val值转化为整数入栈
第七步:
当遍历到后面的运算符的时候,走到else,判断到底啥运算符,然后进行计算
第八步:
循环结束,返回最后的结果
完整代码
class Solution { public int evalRPN(String[] tokens) { Stack<Integer>stack = new Stack<>(); for(int i = 0; i< tokens.length; i++ ){ String val = tokens[i]; if(isOperator(val) == false){ //如果不是运算符 stack.push(Integer.parseInt(val)); }else{ //到底是啥运算符 int num1 = stack.pop(); int num2 = stack.pop(); switch(val){ case"+": stack.push(num2+num1); break; case"-": stack.push(num2-num1); break; case"*": stack.push(num2*num1); break; case"/": stack.push(num2/num1); break; } } } return stack.pop(); } private boolean isOperator(String x){ if(x.equals("+") || x.equals("-") || x.equals("*") || x.equals("/")){ //为真的情况 return true; } return false; } }
版权归原作者 K稳重 所有, 如有侵权,请联系我们删除。