---
title: '224. Basic Calculator'
description: Given a string s representing a valid expression, implement a basic calculator to evaluate it, and return the result of the evaluation
icon: dot
topics:
  - { name: "Math", slug: "math" }
  - { name: "String", slug: "string" }
  - { name: "Stack", slug: "stack" }
  - { name: "Recursion", slug: "recursion" }
issue: "https://github.com/prdlk/leetcode/issues/71"
sidebar:
  label: 'Basic Calculator'
  badge: 'Hard'
---

### Example 1:
- Input: `s = "1 + 1"`
- Output: `2`

### Example 2:
- Input: `s = " 2-1 + 2 "`
- Output: `3`

### Example 3:
- Input: `s = "(1+(4+5+2)-3)+(6+8)"`
- Output: `23`

### Constraints:

- `1 <= s.length <= 3 * 10^5`
- `s` consists of digits, '+', '-', '(', ')', and ' '.
- `s` represents a valid expression.
- '+' is not used as a unary operation (i.e., "+1" and "+(2 + 3)" is invalid).
- '-' could be used as a unary operation (i.e., "-1" and "-(2 + 3)" is valid).
- There will be no two consecutive operators in the input.
- Every number and running calculation will fit in a signed 32-bit integer.

## Solution

```py
class Solution:
    def calculate(self, s: str) -> int:
```
