LeetCode224. Basic Calculator (用栈计算表达式)
生活随笔
收集整理的這篇文章主要介紹了
LeetCode224. Basic Calculator (用栈计算表达式)
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
解題思路
代碼
class Solution { public:stack <int> st;//數字棧stack <char> cst;//符號棧void solveNum(int n){//如果碰到加減,將上一個數字取出來,做運算之后放入棧中if(st.size() &&cst.size()){char c = cst.top();if(c == '+'){cst.pop();int t = st.top();st.pop();st.push(t+n);}else if(c == '-'){cst.pop();int t = st.top();st.pop();st.push(t-n);}else{st.push(n);}} else{st.push(n);}}//處理字符void solveChar(char c){//如果遇到')',彈出'('即可,并且處理頂部數字,應對類似1+(1+1)+2的情況if(c != ')'){cst.push(c);}else{cst.pop();if(st.size()){int t = st.top();st.pop();solveNum(t);}}}int calculate(string s) {//加上“()”是為了避免全字符的情況s += "()";int num = 0;int flag = 0;for(auto i:s){if(i == ' ') continue;if(i >= '0' && i <= '9') num = num*10+i-'0', flag = 1;else{//如果上一個字符是數字if(flag == 1){//處理數字solveNum(num);num = 0;flag = 0;}//處理字符solveChar(i);}}return st.top();} };轉載于:https://www.cnblogs.com/zhangjiuding/p/9532609.html
總結
以上是生活随笔為你收集整理的LeetCode224. Basic Calculator (用栈计算表达式)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Shell 获取函数返回结果
- 下一篇: 放假个人总结七