mirror of
https://github.com/prdlk/leetcode.git
synced 2026-11-02 13:12:44 +00:00
43 lines
1.1 KiB
Plaintext
43 lines
1.1 KiB
Plaintext
---
|
|||
|
|
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:
|
||
|
|
```
|