当前位置:网站首页>Reverse Polish notation
Reverse Polish notation
2022-07-05 13:02:00 【accumulate steadily ض】
The inverse Polish expression of stack application
What is the inverse Polish expression ??--> Source force buckle 150. Evaluate the inverse Polish expression
Reverse Polish notation :
The inverse Polish expression is a suffix expression , The so-called suffix means that the operator is written after .
The usual formula is a infix expression , Such as ( 1 + 2 ) * ( 3 + 4 ) .
The inverse Polish expression of the formula is written as ( ( 1 2 + ) ( 3 4 + ) * ) .
The inverse Polish expression has two main advantages :There is no ambiguity in the expression after removing the brackets , Even if the above formula is written as 1 2 + 3 4 + * You can also calculate the correct result according to the order .
It is suitable for stack operation : When it comes to numbers, it's on the stack ; When you encounter an operator, you take out two numbers at the top of the stack to calculate , And push the results into the stack
That is to say, we usually write correctly Addition, subtraction, multiplication and division of numbers , It's all like this .. For example : ( 1 + 2 ) * ( 3 + 4 )--> Infix expression , And we can make the computer understand ??-> This introduces today's inverse Polish expression, that is, the suffix expression , Let's turn infix expression into suffix expression .
for example :1+2*3+(4*2+5)*6

- Add curly braces to all operations
- Move the operator outside the corresponding bracket
- Remove all parentheses
Well, we get a suffix expression --> That is, the calculation that the computer can read
How does the computer calculate the result through such a suffix expression ???
That is our magical data structure --> Stack

- When encountering numbers, it will be added to the stack
- When you encounter an operator, you will get two numbers
- The first output is placed on the right side of the operator , The second time out is to the left of the release operator
- After the calculation, continue to put it on the stack
- The final stack top element is the result of the final expression calculation
Code implementation :
class Solution {
public int evalRPN(String[] tokens) {
// Ideas : When it comes to numbers, put them on the stack , If you encounter a number symbol, you will give two numbers to calculate
// Continue to stack the calculation results , Continue to traverse the end of the string
Stack<Integer> stack = new Stack<>();
for(int i =0;i<tokens.length;++i){
String str = tokens[i];
if(!isNumCharacter(str)){// Judge whether it is a symbol
// If it's a number, put it on the stack
int num = Integer.parseInt(str);
stack.push(num);
}else{
// If it's a character, pop the stack , Pop up two numbers
int num2 = stack.pop();
int num1 = stack.pop();
switch(str){
case "+":
stack.push(num1+num2);
break;
case "-":
stack.push(num1-num2);
break;
case "*":
stack.push(num1*num2);
break;
case "/":
stack.push(num1/num2);
break;
}
}
}
return stack.peek();
}
// Used to determine whether this string is a character
public boolean isNumCharacter(String s){
if(s.equals("+")||s.equals("*")||
s.equals("-")||s.equals("/")){
return true;
}
return false;
}
}边栏推荐
- Hiengine: comparable to the local cloud native memory database engine
- Four common problems of e-commerce sellers' refund and cash return, with solutions
- Introduction to sap ui5 flexiblecolumnlayout control
- CVPR 2022 | single step 3D target recognizer based on sparse transformer
- 研究:数据安全工具在 60% 的情况下无法抵御勒索软件
- Transactions on December 23, 2021
- #yyds干货盘点# 解决名企真题:搬圆桌
- RHCSA3
- 非技术部门,如何参与 DevOps?
- Compile kernel modules separately
猜你喜欢

阿里云SLB负载均衡产品基本概念与购买流程

国内市场上的BI软件,到底有啥区别

Introduction aux contrôles de la page dynamique SAP ui5

What if wechat is mistakenly sealed? Explain the underlying logic of wechat seal in detail

开发者,云原生数据库是未来吗?

A specific example of ABAP type and EDM type mapping in SAP segw transaction code

Taobao order amount check error, avoid capital loss API

太方便了,钉钉上就可完成代码发布审批啦!

Get to know linkerd project for the first time

非技术部门,如何参与 DevOps?
随机推荐
Taobao short videos are automatically released in batches without manual RPA open source
Notes for preparation of information system project manager --- information knowledge
Association modeling method in SAP segw transaction code
初识Linkerd项目
Kotlin function
SAP self-development records user login logs and other information
Concurrent performance test of SAP Spartacus with JMeter
946. Verify stack sequence
946. 验证栈序列
Get to know linkerd project for the first time
SAP UI5 视图里的 OverflowToolbar 控件
I'm doing open source in Didi
CVPR 2022 | single step 3D target recognizer based on sparse transformer
Transactions from December 27 to 28, 2021
Compile kernel modules separately
HiEngine:可媲美本地的云原生内存数据库引擎
初次使用腾讯云,解决只能使用webshell连接,不能使用ssh连接。
Didi open source Delta: AI developers can easily train natural language models
Free testing of Taobao tmall API order and flag insertion remark interface
Default parameters of function & multiple methods of function parameters