Leetcode 150 Evaluate Reverse Polish Notation (求值逆波兰表达式)
2017-03-17 21:18
701 查看
一,问题描述
1,用逆波兰表达式法去计算算术表达式的值。其中,有效运算符为+,-,*,/。每个操作数可以是整数或者另一个表达式
2,例如:
3,解题思路:
先定义一个栈用来存放数据的,然后对字符串数组进行从左到后进行扫描,如果遇到的是字符串符号(+,-,*,/),则从栈中取出两个整数进行符号操作的,再把结果放回栈中,如果遇到的是字符串整数,直接存放在栈中去,一直到字符串数组全部扫描完。
二,AC了的程序(用java实现的)
运行结果
result=6
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
相关文章推荐
- LeetCode-150. Evaluate Reverse Polish Notation (JAVA)逆波兰表达式求值
- 【LeetCode】Evaluate Reverse Polish Notation(逆波兰表达式求值) -(Linkedin) Medium ++
- Leetcode 150:Evaluate Reverse Polish Notation(计算逆波兰表达式) --java实现
- Leetcode 150 Evaluate Reverse Polish Notation 反向波兰表示法求值
- [Leetcode] evaluate reverse polish notation 计算逆波兰表达式
- LeetCode | Evaluate Reverse Polish Notation(逆波兰式求值)
- 【LeetCode-面试算法经典-Java实现】【150-Evaluate Reverse Polish Notation(计算逆波兰式)】
- leetcode_2 Evaluate Reverse Polish Notation 逆波兰表达式
- [Leetcode] Evaluate Reverse Polish Notation 逆波兰表达式
- 逆波兰表达式求值(Evaluate Reverse Polish Notation)
- LeetCode: 150_Evaluate Reverse Polish Notation | 分析逆波兰式 | Medium
- LeetCode:150. Evaluate Reverse Polish Notation(逆波兰表达式)
- 【LeetCode刷题Java版】Evaluate Reverse Polish Notation(计算逆波兰表达式)
- Leetcode刷题记——150. Evaluate Reverse Polish Notation(计算逆波兰表达式)
- 【LintCode】Evaluate Reverse Polish Notation 逆波兰表达式求值
- lintcode 中等题:Evaluate Reverse Polish notation逆波兰表达式求值
- leetcode Evaluate Reverse Polish Notation(计算逆波兰表达式)
- [LeetCode] Evaluate Reverse Polish Notation 计算逆波兰表达式
- LeetCode OJ 之 Evaluate Reverse Polish Notation (求逆波兰表达式的值)
- [LeetCode]150 Evaluate Reverse Polish Notation