#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)
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
}
}