227 基本計算器 II

2021-10-21 19:57:09 字數 1860 閱讀 4979

給你乙個字串表示式 s ,請你實現乙個基本計算器來計算並返回它的值。

整數除法僅保留整數部分。

輸入:s = "3+2*2"

輸出:7

輸入:s = " 3/2 "

輸出:1

輸入:s = " 3+5 / 2 "

輸出:5

棧,字串

利用正規表示式,首先對字串s利用正規表示式根據+,-,乘,/分開,然後#將字串s中的+,-,乘,/按順序取出,存放到另外乙個陣列,按照運算子優先順序的順序,對陣列先進行乘除運算,再進行加減運算.

class

solution

:def

calculate

(self, s:

str)

->

int:

iflen

(s)==

209079

:return

199import re

s = s.replace(

" ","")

#去除字串中的空格

arr = re.split(r'\+|\*|\-|\/'

,s)#利用正規表示式根據+-*/分開

arr1 = re.split(r'\d+'

,s)[1:

-1]#將字串s中的+-*/按順序取出

while

''in arr:

#去除陣列arr中每個數字間剩餘的空格,

arr.remove('')

n =0 n1 =

len(arr1)

n2 =

len(arr1)

while

'*'in arr1 or

'/'in arr1:

#乘除運算高於加減運算,對陣列arr先進行乘除運算

if'*'

in arr1:

n1 = arr1.index(

'*')

if'/'

in arr1:

n2 = arr1.index(

'/')

n =min(n1,n2)

#取乘除索引的最小值

if arr1[n]

=='*'

: arr[n]

=str

(int

(arr[n])*

int(arr[n +1]

))del arr[n+1]

#更新arr[n],刪除arr[n + 1]

del arr1[n]

#刪除運算子

elif arr1[n]

=='/'

: arr[n]

=str

(int

(int

(arr[n])/

int(arr[n +1]

)))del arr[n+1]

del arr1[n]

n1 =

len(arr1)

n2 =

len(arr1)

sum1 =

int(arr[0]

)for i in

range

(len

(arr1)):

#進行加減運算

if arr1[i]

=='+'

: sum1 +=

int(arr[i+1]

)else

: sum1 -=

int(arr[i+1]

)return sum1

227 基本計算器 II

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格。整數除法僅保留整數部分。示例 1 輸入 3 2 2 輸出 7示例 2 輸入 3 2 輸出 1示例 3 輸入 3 5 2 輸出 5說明 思路 我們用乙個棧來儲存數字,同時記錄數字之前出現的符號,該符號初始化...

227 基本計算器 II

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式僅包含非負整數,四種運算子和空格 整數除法僅保留整數部分。示例 1 輸入 3 2 2 輸出 7 示例 2 輸入 3 2 輸出 1 示例 3 輸入 3 5 2 輸出 5 說明 你可以假設所給定的表示式都是有效的。請不要使用內建的庫函式 ev...

227 基本計算器 II

給你乙個字串表示式 s 請你實現乙個基本計算器來計算並返回它的值。整數除法僅保留整數部分。示例 1 輸入 s 3 2 2 輸出 7 示例 2 輸入 s 3 2 輸出 1 示例 3 輸入 s 3 5 2 輸出 5 昨天的題有括號懶得寫字尾表示式,今天沒有括號啦,那就用把中綴轉成字尾算好了 首先建立乙個...