LeetCode c++ 基本計算器 II

實現(xiàn)一個基本的計算器來計算一個簡單的字符串表達式的值。

字符串表達式僅包含非負整數(shù),+, - ,*,/ 四種運算符和空格 。 整數(shù)除法僅保留整數(shù)部分。

示例 1:

輸入: "3+2*2"
輸出: 7
示例 2:

輸入: " 3/2 "
輸出: 1
示例 3:

輸入: " 3+5 / 2 "
輸出: 5
說明:

你可以假設(shè)所給定的表達式都是有效的。
請不要使用內(nèi)置的庫函數(shù) eval。
注:這里有好幾個小問題需要注意:
1.初始化op='+';
2.數(shù)字范圍為非負整數(shù),所以s[i]>='0';
3.判斷非數(shù)字時,條件應(yīng)該包含最后一位數(shù)字的處理,即||i==n-1;
操作符操作結(jié)束壓棧后需要重新獲得操作符并初始化num=0;

class Solution {
public:
    int calculate(string s) {
        long res = 0, num = 0, n = s.size();
        char op = '+';
        stack<int> st;
        for (int i = 0; i < n; ++i) {
            if (s[i] >= '0') {
                num = num * 10 + s[i] - '0';
            }
            if ((s[i] < '0' && s[i] != ' ') || i == n - 1) {
                if (op == '+') st.push(num);
                if (op == '-') st.push(-num);
                if (op == '*' || op == '/') {
                    int tmp = (op == '*') ? st.top() * num : st.top() / num;
                    st.pop();
                    st.push(tmp);
                }
                op = s[i];
                num = 0;
            } 
        }
        while (!st.empty()) {
            res += st.top();
            st.pop();
        }
        return res;
    }
};
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 實現(xiàn)一個基本的計算器來計算一個簡單的字符串表達式的值。 字符串表達式僅包含非負整數(shù),+, - ,*,/ 四種運算符...
    1f872d1e3817閱讀 281評論 0 0
  • 實現(xiàn)一個基本的計算器來計算一個簡單的字符串表達式的值。字符串表達式僅包含非負整數(shù),+, - ,*,/ 四種運算符和...
    vbuer閱讀 590評論 0 0
  • 一、Python簡介和環(huán)境搭建以及pip的安裝 4課時實驗課主要內(nèi)容 【Python簡介】: Python 是一個...
    _小老虎_閱讀 6,339評論 0 10
  • 官網(wǎng) 中文版本 好的網(wǎng)站 Content-type: text/htmlBASH Section: User ...
    不排版閱讀 4,718評論 0 5
  • 看來內(nèi)置的執(zhí)行效率還可以,哈哈哈 棧版本:
    DaydayHoliday閱讀 570評論 0 1

友情鏈接更多精彩內(nèi)容