2 ms·
Another python, but recursive: def doit(expr): expr=''.join(expr.split()) if expr.startswith('('): (left,size) = doit(expr[1:]) size+
by marketer 18y ago
Another python, but recursive:
def doit(expr):
expr=''.join(expr.split())
if expr.startswith('('):
(left,size) = doit(expr[1:])
size+=2
else:
left = re.compile('(\w+)').match(expr).groups(0)[0]
size = len(left)
rest = expr[size:]
if rest=='' or rest[0]==')':
return left,size
op = re.compile('([*/+-])').match(rest).groups(0)[0]
right,size2 = doit(rest[1:])
return '(%s %s %s)'%(op, left, right) ,size+size2+1