## Microsoft Interview Question for Software Engineers

Country: United States
Interview Type: In-Person

Comment hidden because of low score. Click to expand.
0
of 0 vote

Use two stacks, one for operands and one of operators. Whenever you notice parenthesis, take special action. Solution in Python below:

``````def evaluateInfix(expr):

def helper(operator, x, y):
if operator == '+': return x + y
if operator == '-': return x - y
if operator == '/': return y // x
if operator == '*': return x * y

operandStack = [] # for numbers
operatorStack = [] # for arithmetic operators and parens.
operators =  {
'/': 1,
'*': 1,
'+': 2,
'-': 2
}
for token in expr:

if token.isdigit():
operandStack.append(token)
elif token == '(':
operatorStack.append(token)

elif token == ')':
while operatorStack[-1] != '(':
operandStack.append()

elif token == ')':
while operatorStack[-1] != '(':
result = helper(operatorStack.pop(), int(operandStack.pop()), int(operandStack.pop()))
operandStack.append(result)
operatorStack.pop()

elif token in operators:
while len(operatorStack) and operators[operatorStack[-1]] <= operators[token]:
result = helper(operatorStack.pop(), int(operandStack.pop()), int(operandStack.pop()))
operandStack.append(result)

operatorStack.append(token)

while len(operatorStack):
result = helper(operatorStack.pop(), int(operandStack.pop()), int(operandStack.pop()))
operandStack.append(result)

return operandStack.pop()``````

Test Code:

``````print(evaluateInfix('2 + 3 * 5')) # 17
print(evaluateInfix('4 * 5 / 2')) # 10``````

Name:

Writing Code? Surround your code with {{{ and }}} to preserve whitespace.

### Books

is a comprehensive book on getting a job at a top tech company, while focuses on dev interviews and does this for PMs.

### Videos

CareerCup's interview videos give you a real-life look at technical interviews. In these unscripted videos, watch how other candidates handle tough questions and how the interviewer thinks about their performance.