Implement basic calculator
Company: Amazon
Role: Software Engineer
Category: Coding & Algorithms
Difficulty: medium
Interview Round: Online Assessment
Overview: This question evaluates skill in parsing and evaluating arithmetic expressions with integer operands and the operators +, -, *, and /, focusing on operator precedence and evaluation order within the Coding & Algorithms domain.
Constraints
- 1 <= len(s) <= 100000
- s contains only digits, '+', '-', '*', '/', and spaces
- The expression is valid and contains no parentheses
- Operands are non-negative integers (no unary plus/minus)
- Integer division truncates toward zero
- The final result fits in a 32-bit signed integer
Examples
Input: 3+2*2
Expected Output:
Input: 14 - 3*4 + 5 / 2
Expected Output:
Hints
- Scan the string once while tracking the current number and the previous operator.
- Use a 'last term' variable to handle * and / precedence without a stack.
- Apply the previous operator when you meet a new operator or reach the end.
- To truncate toward zero in Python, use int(a / b) for division.