-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathONP_T.py
64 lines (43 loc) · 1.3 KB
/
ONP_T.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
t = int(input())
symbols = []
res = []
for i in range(t):
symbols.append(input())
for z in range(t):
symbol = symbols[z]
stack = []
postfix = []
priority = {'+':1,
'-':1,
'*':2,
'/':2,
'^':3,
'-1':0
}
for i in range(len(symbol)):
if symbol[i].isalpha():
postfix.append(symbol[i])
else:
if symbol[i] == '(':
stack.append(-1)
elif symbol[i] == ')':
j = len(stack)
while stack[j-1] != -1:
new = stack[-1]
stack.pop()
postfix.append(new)
j -= 1
stack.pop()
else:
if priority[str(symbol[i])] > priority[str(stack[-1])]:
stack.append(symbol[i])
else:
while priority[symbol[i]] <= priority[stack[-1]]:
new = stack[-1]
stack.pop()
postfix.append(new)
# print(stack)
# print(postfix)
res.append(postfix)
for i in range(t):
print(*res[i], sep="")