Leetcode_224_基本计算器_hn

2020-03-17  本文已影响0人  1只特立独行的猪

题目描述

实现一个基本的计算器来计算一个简单的字符串表达式的值。
字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。

示例

示例 1:

输入: "1 + 1"
输出: 2

示例2:

输入: " 2-1 + 2 "
输出: 3

示例3:

输入: "(1+(4+5+2)-3)+(6+8)"
输出: 23

说明

解答方法

方法一:栈和不反转字符串

思路

代码

class Solution:
    def calculate(self, s: str) -> int:
        stack = []
        res = 0
        nums = 0
        sign = 1
        for ch in s:
            if ch.isdigit():
                nums = nums*10 + int(ch)
            
            if ch is '+':
                res += sign * nums
                sign = 1
                nums = 0
            
            if ch is '-':
                res += sign * nums
                sign = -1
                nums = 0
            
            if ch is '(':
                stack.append(res)
                stack.append(sign)
                sign = 1
                res = 0

            if ch is ')':
                res += sign * nums
                res *= stack.pop()
                res += stack.pop()
                nums = 0

        return res + sign*nums

时间复杂度

O(N),其中 N 指的是字符串的长度。

空间复杂度

O(N),其中 N 指的是字符串的长度。

上一篇下一篇

猜你喜欢

热点阅读