224 基本計算器

2021-10-21 18:05:39 字數 1459 閱讀 1808

leetcode題目:224. 基本計算器

剛開始審題不認真,想用以前本科時期學習時用的棧 + 逆波蘭表示式

其實注意到了上面的幾個注意點就好寫了。

解釋上述三點:

定義兩個棧:

因為棧是先進後出,因此需要倒序遍歷s。

假設當前遍歷到spos位置,分為如下幾種情況:

遇到數字0~9,將數字(不一定是個位數)獲取,加入棧stk_num中。

解釋2.後面解釋。

有了上述思路,可以寫出ac**:

class solution else if (s[j] == '+')else if (s[j+1] == '-')else

}else

}else if (s[j] == '-')else if (s[j+1] == '-')else

}else

}else

}s.push_back(')');

stackstk_op;

stackstk_num;

int n = s.size();

int pos = n - 1;

while (pos != -1)else if (s[pos] == '(')elseelse

stk_num.push(ans);}}

pos --;

}else if (s[pos] == '+' || s[pos] == '-')else

string s_digit = s.substr(index+1, pos-index);

int digit = stoi(s_digit);

stk_num.push(digit);

pos = index;}}

return stk_num.top();

}};

執行用時:20 ms, 在所有 c++ 提交中擊敗了50.04%的使用者

記憶體消耗:10.2 mb, 在所有 c++ 提交中擊敗了35.76%的使用者

因此,我們可以正序計算出結果。

class solution else if (s[pos] == '-')else if (s[pos] == '+')else if (s[pos] == '(')else if (s[pos] == ')')else

ret += sign * num;}}

return ret;

}};

執行用時:12 ms, 在所有 c++ 提交中擊敗了71.50%的使用者

記憶體消耗:7.8 mb, 在所有 c++ 提交中擊敗了90.08%的使用者

224 基本計算器

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式可以包含左括號 右括號 加號 減號 非負整數和空格 示例 1 輸入 1 1 輸出 2 示例 2 輸入 2 1 2 輸出 3 示例 3 輸入 1 4 5 2 3 6 8 輸出 23 說明 你可以假設所給定的表示式都是有效的。請不要使用內建的...

224 基本計算器

題目描述 實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式可以包含左括號 右括號 加號 減號 非負整數和空格 示例 1 輸入 1 1 輸出 2 示例 2 輸入 2 1 2 輸出 3 示例 3 輸入 1 4 5 2 3 6 8 輸出 23 說明 你可以假設所給定的表示式都是有效的。請不要...

224 基本計算器

224.基本計算器 困難 答案整理 加深記憶 便於複習!python eval 函式還沒完全看懂。給你乙個字串表示式 s 請你實現乙個基本計算器來計算並返回它的值。示例 1 輸入 s 1 1 輸出 2 示例 2 輸入 s 2 1 2 輸出 3 示例 3 輸入 s 1 4 5 2 3 6 8 輸出 2...