solution.md 1.7 KB
Newer Older
ToTensor's avatar
ToTensor 已提交
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96
# 基本计算器

<p>给你一个字符串表达式 <code>s</code> ,请你实现一个基本计算器来计算并返回它的值。</p>

<p> </p>

<p><strong>示例 1:</strong></p>

<pre>
<strong>输入:</strong>s = "1 + 1"
<strong>输出:</strong>2
</pre>

<p><strong>示例 2:</strong></p>

<pre>
<strong>输入:</strong>s = " 2-1 + 2 "
<strong>输出:</strong>3
</pre>

<p><strong>示例 3:</strong></p>

<pre>
<strong>输入:</strong>s = "(1+(4+5+2)-3)+(6+8)"
<strong>输出:</strong>23
</pre>

<p> </p>

<p><strong>提示:</strong></p>

<ul>
	<li><code>1 <= s.length <= * 10<sup>5</sup></code></li>
	<li><code>s</code> 由数字、<code>'+'</code><code>'-'</code><code>'('</code><code>')'</code>、和 <code>' '</code> 组成</li>
	<li><code>s</code> 表示一个有效的表达式</li>
</ul>


## template

```python
class Solution:
    def calculate(self, s: str) -> int:
        s = s.replace(" ", "")
        n = len(s)
        sign = 1
        stack = [sign]
        i = sumS = 0
        while i < n:
            if s[i] == "(":
                stack.append(sign)
                i += 1
            elif s[i] == ")":
                stack.pop()
                i += 1
            elif s[i] == "+":
                sign = stack[-1]
                i += 1
            elif s[i] == "-":
                sign = -stack[-1]
                i += 1
            else:
                num = 0
                while i < n and s[i].isdigit():
                    num = num * 10 + int(s[i])
                    i += 1
                sumS += sign * num
        return sumS

```

## 答案

```python

```

## 选项

### A

```python

```

### B

```python

```

### C

```python

```