題目都一樣,稍微改一下輸入。**通過了以下 3 題的測試資料。其中,leetcode的兩題的測試資料不夠複雜(下面說明)。**的正確性,還需要更多的測試資料來測。
224. 基本計算器
227. 基本計算器 ii
題目 1683: 演算法3-4:表示式求值
leetcode 227 題的測試資料,沒有包含以下兩種情況:1、負數開頭。類似:-2+...
2、左括號後的第乙個數是負數。類似:2*(-3+4)...
另外,如果有leetcode會員,可以再提交一下這題:772. 基本計算器 iii
#include#include#include#includeusing namespace std;
// 裝數字的棧
stacknum;
// 裝符號的棧。從棧底到棧頂方向,符號運算優先順序越高
// 優先順序越高,越要優先計算
// ) < +、- < *、/ < (
stackopr;
// 儲存符號優先順序
mapprio;
void initpriority()
// 雙目運算子的計算。c:中間的符號;a:左邊的數;b:右邊的數
int cal(int a, int b, char c)
if (c=='-')
if (c=='*')
if (c=='/')
return 0;
}void docal()
// 特殊情況:-1+...
// (-2+3-...)
// 2+(3-2+1)
// 2+(-2+1)*2/2 2+(2-1)*2
// 1+2*3/2
int calculate(string s)
int t=0; // 用於字串轉int值
for(int i=0; iif (isdigit(s[i]))
}
else
if (!opr.empty() && opr.top() == '(' && s[i]==')') else }}
}while(!opr.empty())
return num.top();
}int main()
return 0;
}
利用棧結構實現四則運算求值
文章目錄 5.思考題 棧是計算機中非常基礎而又極其重要的一種資料結構,許多演算法的實現都離不開棧,它的特點是 先進後出 也可以說 後進先出 打乙個形象的比方 棧好比乙個彈夾,最先放入的子彈只能最後打出 而最後放入的子彈則最先打出。我們生活中接觸的表示式大部分都是中綴表示式,形如a b,這種表示式的特...
含括號的四則運算
總體思路 需要用到棧,從中綴表示式到字尾表示式,再把字尾表示式轉化為結果,比如計算9 3 1 5 4 2,這個式子就叫做中綴表示式,然後我們需要把它轉化成字尾表答式,方法 將中綴表示式從左到右讀取,如果是數字,直接輸出到字尾表示式,如果是字元,則如果是右括號,把從棧頂開始到棧中左括號的字元輸出到字尾...
帶括號的四則運算
帶括號的四則運算 public class caculatordemo 帶括號的四則運算 param exp return public static double calckuohao string exp else 不帶括號的四則運算 param exp return public static...