實現
import re
class Solution:
# @param expression: A string list
# @return: The Reverse Polish notation of this expression
def convertToRPN(self, expression):
# write your code here
result = []
op = ['#']
for str in expression:
if self.isNumeric(str):
result.append(str)
else:
if str == '(':
op.append(str)
continue
if str == ')':
while True:
t = op.pop();
if(t == '('):
break
result.append(t)
continue
level1 = self.getLevel(str)
level2 = self.getLevel(op[-1])
if level1>level2:
op.append(str)
else:
while True:
if self.getLevel(op[-1]) < level1:
op.append(str)
break
result.append(op.pop())
while True:
if(op[-1] == '#'):
break
result.append(op.pop())
return result
def isNumeric(self,str):
return re.match(r'[+-]?[0-9]+',str)
def getLevel(self,str):
if str == '+' or str == '-':
return 1
if str == '*' or str == '/':
return 2