zoukankan      html  css  js  c++  java
  • Leetcode练习(Python):字符串类:第227题:基本计算器 II:实现一个基本的计算器来计算一个简单的字符串表达式的值。 字符串表达式仅包含非负整数,+,

    题目:
    基本计算器 II:实现一个基本的计算器来计算一个简单的字符串表达式的值。  字符串表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格  。 整数除法仅保留整数部分。

    说明:

    • 你可以假设所给定的表达式都是有效的。
    • 请不要使用内置的库函数 eval
    思路:
    使用栈来实现,之前在做课设时候做过,因为不考虑括号和小数点的问题,比较简单。
    程序:
    class Solution:
        def calculate(self, s: str) -> int:
            if not s:
                return 0
            length = len(s)
            if length == 1:
                return int(s)
            myStack = []
            data = 0
            sign = '+'
            for index in range(len(s)):
                if s[index].isdigit():
                    data = data * 10 + int(s[index])
                if s[index] in '+-*/' or index == length - 1:
                    if sign == '+':
                        myStack.append(data)
                    elif sign == '-':
                        myStack.append(-data)
                    elif sign == '*':
                        myStack.append(myStack.pop() * data)
                    else:
                        data_before = myStack.pop()
                        if data_before > 0:
                            myStack.append(data_before//data)
                        elif data_before < 0:
                            myStack.append(-(abs(data_before)//data))
                        else:
                            myStack.append(0)
                    sign = s[index]
                    data = 0
        return sum(myStack)
  • 相关阅读:
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 画图(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 相邻数对(暴力)
    Java实现 蓝桥杯 算法训练 Cowboys
    Java实现 蓝桥杯 算法训练 Cowboys
    55. Jump Game
    54. Spiral Matrix
    50. Pow(x, n)
  • 原文地址:https://www.cnblogs.com/zhuozige/p/12851403.html
Copyright © 2011-2022 走看看