leetcode:面試題 16.26. 計算器
模擬運算題。
傳統做法使用兩個棧, 乙個操作符棧,乙個數棧, 然**棧 出棧就好。
雙端佇列模擬
**有點長。
class
solution
else
else
tmp = a;
} num.
add(tmp)
; oper.
add(cs[i]);
tmp =0;
}}num.
add(tmp)
;// 最後乙個有可能是 * | / 上面並沒有處理 if(
!oper.
isempty()
&&(oper.
peeklast()
=='*'
|| oper.
peeklast()
=='/'))
// 處理操作符 + - 順序要從左到右
// "1-1+1"
while
(!oper.
isempty()
)else
num.
addfirst
(a);
}return num.
peek();}}
利用棧簡潔點
class
solution
else
else
tmp =0;
c = cs[i];}
}if(c ==
'*')
else
if(c ==
'/')
else
while
(stack.
size()
>1)
return stack.
peek();}}
面試題 16 26 計算器 棧,表示式運算
表示式運算子優先順序演算法。定義運算子的優先順序 1 2代表前乙個和後乙個運算子。例如 在 後面,那麼 屬於2 22指示的那個維度。假設表示式的開頭和結尾有 1 2 x x 這個方法適用於所有的表示式。class solution case case case return res int tonu...
歷屆試題 小計算器 模擬
題意 傳送門 題解 模擬,對於清空操作,只有數字和運算清空了,但是進製卻沒有動,主要在於x進製轉為10進製,10進製轉為x進製,也是比較好寫的乙個模擬。include using namespace std long long dchange string s,int x if s 0 return...
藍橋杯 試題 歷屆試題 小計算器(模擬)
模擬程式型計算器,依次輸入指令,可能包含的指令有 1.數字 num x x為乙個只包含大寫字母和數字的字串,表示乙個當前進製的數 2.運算指令 add sub mul div mod 分別表示加減乘,除法取商,除法取餘 3.進製轉換指令 change k 將當前進製轉換為k進製 2 k 36 4.輸...