Skip to main content
Back to problems
#224
Hard Algorithms

Basic calculator

Math String Stack Recursion
46.6% acceptance
Jan 12, 2026
6939
556
Given a string s representing a valid expression, implement a basic calculator to evaluate it, and return the result of the evaluation. Note: You are not allowed to use any built-in function which evaluates strings as mathematical expressions, such as eval().

Solution

Rust
Time O(n)
Space O(n)
LeetCode
solution.rs
impl Solution {
  pub fn calculate(s: String) -> i32 {
    let mut stack = vec![];
    let mut result = 0;
    let mut num = 0;
    let mut sign = 1;
    
    for ch in s.chars() {
      match ch {
        '0'..='9' => {
          num = num * 10 + (ch as i32 - '0' as i32);
        }
        '+' => {
          result += sign * num;
          num = 0;
          sign = 1;
        }
        '-' => {
          result += sign * num;
          num = 0;
          sign = -1;
        }
        '(' => {
          stack.push(result);
          stack.push(sign);
          result = 0;
          sign = 1;
        }
        ')' => {
          result += sign * num;
          num = 0;
          result *= stack.pop().unwrap();
          result += stack.pop().unwrap();
        }
        _ => {}
      }
    }
    result + sign * num
  }
}