1 Star 0 Fork 0

LLL2343/leetcode

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
224.py 1.31 KB
一键复制 编辑 原始数据 按行查看 历史
lll2343 提交于 2022-02-27 19:53 . leetcode
# coding: utf-8
from typing import List
from parso import parse
class Solution:
# 只有加法和减法和括号
# 使用两个栈
def calculate(self, s: str) -> int:
op = []
nums = []
i = 0
while i < len(s):
ch = s[i]
if ch == '(':
continue
elif ch == ')':
sum = nums[-1]+nums[-2]
nums.pop()
nums.pop()
nums.append(sum)
i = i + 1
elif ch == '-':
num, i = self.changeInt(s, i+1)
nums.append(-1 * num)
op.append('+')
elif ch == '+':
num, i = self.changeInt(s, i+1)
nums.append(num)
op.append('-')
elif ch == ' ' or (ch >= '0' and ch <= '9'):
num, i = self.changeInt(s, i)
nums.append(num)
num = 0
def changeInt(self, s: str, begin: int) -> int:
ans = 0
i = begin
while i < len(s) and s[i] != '+' and s[i] != '-' and s[i] != '(' and s[i] != ')':
if(s[i] >= '0' and s[i] <= '9'):
ans = ans*10 + int(s[i])
i = i+1
return ans, i
if __name__ == '__main__':
solu = Solution()
print(solu.calculate('1+ 2 -1-2'))
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/lll2343/leetcode.git
git@gitee.com:lll2343/leetcode.git
lll2343
leetcode
leetcode
master

搜索帮助