Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
来源:互联网 发布:算法工程师培训班 编辑:程序博客网 时间:2024/06/05 01:53
一,问题描述
1,用逆波兰表达式法去计算算术表达式的值。其中,有效运算符为+,-,*,/。每个操作数可以是整数或者另一个表达式
2,例如:
3,解题思路:
先定义一个栈用来存放数据的,然后对字符串数组进行从左到后进行扫描,如果遇到的是字符串符号(+,-,*,/),则从栈中取出两个整数进行符号操作的,再把结果放回栈中,如果遇到的是字符串整数,直接存放在栈中去,一直到字符串数组全部扫描完。
二,AC了的程序(用java实现的)
import java.util.*;public class Test2{ public int evalRPN(String []tokens) { if(tokens==null||tokens.length==0) { return -1; } Stack<Integer> stack=new Stack<Integer>(); //这个stack用来存放整数的,不存放符号+,-,*,/ for(int i=0;i<tokens.length;i++) { if(tokens[i].equals("+")||tokens[i].equals("-")||tokens[i].equals("*")||tokens[i].equals("/")) { int data1=stack.pop();//出栈第一个整数,栈的规则是先进后出的,因此对于 int data2=stack.pop();//出栈第二个整数 //System.out.println("data1="+data1); //System.out.println("data2="+data2); int data3; if(tokens[i].equals("+")) { data3=data1+data2; stack.push(data3); }else if(tokens[i].equals("-")) { data3=data2-data1; stack.push(data3); }else if(tokens[i].equals("*")) { data3=data1*data2; stack.push(data3); }else if(tokens[i].equals("/")) { data3=data2/data1; stack.push(data3); } } else { int data=Integer.parseInt(tokens[i]); //把字符串转化为整数 stack.push(data); //当碰到整数的话,就是直接入栈。 } } int data4=stack.pop(); return data4; } public static void main(String []args) { Test2 test=new Test2(); //String []tokens={"2","1","+","3","*"}; String []tokens={"4","13","5","/","+"}; int result=test.evalRPN(tokens); System.out.println("result="+result); }}
运行结果
result=6
1 0
- Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
- LeetCode | Evaluate Reverse Polish Notation(逆波兰式求值)
- 【LeetCode】Evaluate Reverse Polish Notation(逆波兰表达式求值) -(Linkedin) Medium ++
- LeetCode:150. Evaluate Reverse Polish Notation(逆波兰表达式)
- 【LintCode】Evaluate Reverse Polish Notation 逆波兰表达式求值
- 逆波兰表达式求值(Evaluate Reverse Polish Notation)
- LeetCode-150. Evaluate Reverse Polish Notation (JAVA)逆波兰表达式求值
- leetcode Evaluate Reverse Polish Notation(计算逆波兰表达式)
- [Leetcode] Evaluate Reverse Polish Notation 逆波兰表达式
- Evaluate Reverse Polish Notation 逆波兰表达式
- 424.Evaluate Reverse Polish Notation-逆波兰表达式求值(中等题)
- Java实现逆波兰表达式(Evaluate Reverse Polish Notation)
- Leetcode 150:Evaluate Reverse Polish Notation(计算逆波兰表达式) --java实现
- 【LeetCode刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)
- LeetCode OJ 之 Evaluate Reverse Polish Notation (求逆波兰表达式的值)
- Evaluate Reverse Polish Notation--逆波兰式求值
- evaluate-reverse-polish-notation(逆波兰表示求值)
- Leetcode 150 Evaluate Reverse Polish Notation 反向波兰表示法求值
- K-Means聚类算法
- CMake使用总结
- IO之ByteInputStream ByteOutputStream
- 输出缓存区的内存分配
- 初始正则
- Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
- MYSQL(6)数据操作2
- 使用Statement执行sql语句
- leetcode 128. Longest Consecutive Sequence .
- 基于POI的Excel表格数据导出
- Private Members in JavaScript
- Caffe中的Makefile.config的一些说明
- javaweb学习总结(七)——HttpServletResponse对象(一)
- 3.17