当前位置:网站首页>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;
}
}
边栏推荐
- I met Tencent in the morning and took out 38K, which showed me the basic smallpox
- ABAP editor in SAP segw transaction code
- Laravel document reading notes -mews/captcha use (verification code function)
- Discussion on error messages and API versions of SAP ui5 getsaplogonlanguage is not a function
- The solution of outputting 64 bits from printf format%lld of cross platform (32bit and 64bit)
- How to connect the API interface of Taobao open platform (super detailed)
- Association modeling method in SAP segw transaction code
- What is the difference between Bi software in the domestic market
- 155. 最小栈
- Concurrent performance test of SAP Spartacus with JMeter
猜你喜欢
[cloud native] use of Nacos taskmanager task management
HiEngine:可媲美本地的云原生内存数据库引擎
Notes for preparation of information system project manager --- information knowledge
《2022年中國銀行業RPA供應商實力矩陣分析》研究報告正式啟動
Vonedao solves the problem of organizational development effectiveness
uni-app开发语音识别app,讲究的就是简单快速。
SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
Laravel document reading notes -mews/captcha use (verification code function)
Transactions from January 14 to 19, 2022
Simply take stock reading notes (3/8)
随机推荐
155. 最小栈
Actual combat simulation │ JWT login authentication
Hiengine: comparable to the local cloud native memory database engine
HiEngine:可媲美本地的云原生内存数据库引擎
Concurrent performance test of SAP Spartacus with JMeter
Difference between JUnit theories and parameterized tests
SAP SEGW 事物码里的 ABAP 类型和 EDM 类型映射的一个具体例子
RHCSA2
Super efficient! The secret of swagger Yapi
I'm doing open source in Didi
Four common problems of e-commerce sellers' refund and cash return, with solutions
Oppo Xiaobu launched Obert, a large pre training model, and promoted to the top of kgclue
[cloud native] event publishing and subscription in Nacos -- observer mode
Kotlin function
Reshape the power of multi cloud products with VMware innovation
uni-app开发语音识别app,讲究的就是简单快速。
946. Verify stack sequence
Insmod prompt invalid module format
Simply take stock reading notes (3/8)
mysql拆分字符串做条件查询