逆波兰表达式

/*

力扣题号:150逆波兰表达式求值

逆波兰表达式即后缀表达式

【题目描述】:

给出逆波兰表达式,求得对应的值

【示例一】

输入:["5","2","-","4","*"]

输出:12

解释:该算式转化为常见的中缀算术表达式为((5-2) x 4) = 12

*/


解题思路:

仔细分析,本题中每一个子表达式要得到一个结构,然后将这个结果再进行运算,其实就是相邻字符串消除的过程

以题目为例子:["5","2","-","4","*"],当遍历到运算符时,可以取之前两位数字进行运算 5-2,得到结果后3

继续遍历,当遇到“*”,就可以处理3*4,得到结果


技巧:

相邻元素之间最好的数据机构就是栈


代码如下:



public int evelNRN(String[] tokens){

    Deque stack =new LinkedList();

    for (String s : tokens){

        if (s.equals("+") || s.equals("-") || s.equals("*") ||s.equals("/")){

            Integer i1 = stack.pop();

              Integer i2 = stack.pop();

              Integer val =0;

              if (s.equals("+")){

                    val = i1 + i2;

              }

            if (s.equals("-")){

                val = i2 - i1;

              }

            if (s.equals("*")){

                val = i1 * i2;

              }

            if (s.equals("/")){

                val = i2 / i1;

              }

            stack.push(val);

      }else{

            stack.push(Integer.valueOf(s));

      }

    }

    return stack.pop();

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容