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)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM