【算法】逆波兰式求值


逆波兰式求值

概念:

前缀表达式(波兰式):二元运算符总是置于与之相关的两个运算对象之前,所以,这种表示法也称为前缀表达式。例子:+12
中缀表达式:例子:1+2
后缀表达式(逆波兰式):例子:21+

解题思路:

利用数据结构,遍历数组。
1、遇见数字,直接入栈。
2、遇见符号:
a、弹出栈顶的右操作数。
b、弹出栈顶的左操作数。
c、符号转换为运算符,2个数字计算并将结果入栈。
3、遍历结束则栈中的唯一数字就是最后的结果值。

Java版:

 public int evalRPN(String[] tokens) {
        Stack<Integer> stack = new Stack<Integer>();
        
        for (int i = 0; i < tokens.length; i++) {
            switch (tokens[i]) {
            case "+":
                stack.push(stack.pop() + stack.pop());
                break;
            case "-":
                stack.push(-stack.pop() + stack.pop());
                break;
            case "*":
                stack.push(stack.pop() * stack.pop());
                break;  
            case "/":
                Integer pre = stack.pop();
                stack.push(stack.pop() / pre);
                break;
            default:
                stack.push(Integer.valueOf(tokens[i]));
                break;
            }
        }
        
        return stack.pop();
    }

Objective-C版:

OC版的解法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容