File tree Expand file tree Collapse file tree 1 file changed +54
-0
lines changed
Expand file tree Collapse file tree 1 file changed +54
-0
lines changed Original file line number Diff line number Diff line change 1+ ``` java
2+ import java.io.* ;
3+ import java.util.ArrayDeque ;
4+
5+ public class Main {
6+ static ArrayDeque<Character > stack = new ArrayDeque<> ();
7+
8+ public static void main (String [] args ) throws IOException {
9+ BufferedReader br = new BufferedReader (new InputStreamReader (System . in));
10+ StringBuilder sb = new StringBuilder ();
11+ String userInput = br. readLine();
12+
13+ for (int i = 0 ; i < userInput. length(); i++ ) {
14+ char target = userInput. charAt(i);
15+
16+ switch (target) {
17+ case ' +' :
18+ case ' -' :
19+ case ' *' :
20+ case ' /' :
21+ while (! stack. isEmpty() && priority(stack. peek()) >= priority(target)) {
22+ sb. append(stack. pop());
23+ }
24+ stack. push(target);
25+ break ;
26+ case ' (' :
27+ stack. push(target);
28+ break ;
29+ case ' )' :
30+ while (! stack. isEmpty() && stack. peek() != ' (' ) {
31+ sb. append(stack. pop());
32+ }
33+ stack. pop();
34+ break ;
35+ default :
36+ sb. append(target);
37+ }
38+ }
39+
40+ while (! stack. isEmpty()) {
41+ sb. append(stack. pop());
42+ }
43+
44+ System . out. println(sb. toString());
45+ }
46+
47+ public static int priority (char op ) {
48+ if (op == ' (' || op == ' )' ) return 0 ;
49+ if (op == ' +' || op == ' -' ) return 1 ;
50+ if (op == ' *' || op == ' /' ) return 2 ;
51+ return - 1 ;
52+ }
53+ }
54+ ```
You can’t perform that action at this time.
0 commit comments