基本計算器

2021-09-18 06:19:41 字數 1103 閱讀 7117

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。

字串表示式可以包含左括號 ( ,右括號 ),加號 + ,減號 -,非負整數和空格 。

示例 1:

示例2:

示例 3:

我的媽呀這個題提交了n次終於通過了。沒有想到特殊情況比如輸入是這種「 33」或者(33)或者1-(33)。

設定兩個棧,乙個資料棧儲存資料,乙個符號棧儲存符號。

當符號是』)『並且符號棧的大小大於1時,則在遇到符號棧棧頂元素是』('之前,列印符號棧棧頂元素,對資料棧中的資料計算,並將計算結果push到資料棧中;如果當前符號是『+』或者『-』並且符號棧頂元素是『-』時,則需要丟擲符號棧棧頂元素,以及資料棧中的前兩個棧頂元素將計算結果push到資料棧中,再將當前符號push到符號棧中;如果符號棧棧頂元素不是『-』,則直接將當前符號push到符號棧中;若當前符號是『(』直接push;若當前符號是『 』,則繼續迴圈;若當前符號是數字,則判斷該字元後的幾位是否都是數字,知道不是數字結束,將數字字串轉換成整型push到資料棧中。

字串遍歷結束,首先判斷符號棧在棧頂元素不是『(』的情況下是否為空,若不為空則對資料棧中的資料計算,計算結果push到資料棧;

最後返回資料棧中的棧頂元素。

public int calculate(string s) else if(s.charat(i)=='+') 

ch.push('+');

}else if(s.charat(i)=='-')

ch.push('-');

}else if(s.charat(i)==' ') else if(s.charat(i)==')') else if(c=='-')

data.push(num);

}ch.pop();

}}else

data.push(integer.parseint(s.substring(index,i)));

i--;

} } while(!ch.isempty()&&ch.peek()!='(')

while(!data.isempty())

return data.pop();

return 0;

}

基本計算器

輸入表示式字串,以 表示結束,計算並輸出表示式值。運算元可以是正負整數或實數,操作符有 乘方 和 sin 正弦 cos 余弦 log 對數 ln 自然對數 等函式。inttransfer charc void push in stack char op s,vector string res,cha...

基本計算器

給你乙個字串表示式 s,請你實現乙個基本計算器來計算並返回它的值。整數除法僅保留整數部分。示例 1 輸入 s 3 2 2 輸出 7示例 2 輸入 s 3 2 輸出 1示例 3 輸入 s 3 5 2 輸出 51 s.length 3 105 s 由整數和算符 組成,中間由一些空格隔開 s 表示乙個 有...

基本計算器

描述 給你乙個字串表示式s,請你實現乙個基本計算器來計算並返回它的值。注意 不允許使用任何將字串作為數學表示式計算的內建函式,比如eval 1 s.length 3 105 s 由數字 和 組成 s 表示乙個有效的表示式 不能用作一元運算 例如,1 和 2 3 無效 可以用作一元運算 即 1 和 2...