224 基本計算器

2021-10-22 07:51:32 字數 1211 閱讀 6897

題目描述

給你乙個字串表示式s,請你實現乙個基本計算器來計算並返回它的值。

示例 1:

輸入:s = "1 + 1"

輸出:2

示例 2:

輸入:s = " 2-1 + 2 "

輸出:3

示例 3:

輸入:s = "(1+(4+5+2)-3)+(6+8)"

輸出:23

題解:法一:

雙棧模擬。

乙個數字棧,乙個符號棧。

先把s中的空格去掉。。。

從左往右遍歷s:

最後,符號棧不為空繼續計算。

時間複雜度:o(n

)o(n)

o(n)

額外空間複雜度:o(n

)o(n)

o(n)

class

solution

intcalculate

(string s)

int ans;

for(

int i =

0, j; i < t.

size()

;++i )

elseif(

isdigit

(t[i]))

else

}while

( ops.

size()

)calc()

;return nums.

back()

;}};

/*記憶體:8.5mb,擊敗:30.48%

*/

法二:

考慮把所有的括號去掉,比如1 - ( 2 + 3 ),去掉括號後為1 - 2 - 3

考慮使用1-1分別代表正負號,括號內的正負號與括號外的正負號有關,所以我們需要使用乙個符號棧,具體見**:

class

solution

}return ret;}}

;/*記憶體:7.8mb,擊敗:93.16%

*/

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 基本計算器

leetcode題目 224.基本計算器 剛開始審題不認真,想用以前本科時期學習時用的棧 逆波蘭表示式。其實注意到了上面的幾個注意點就好寫了。解釋上述三點 定義兩個棧 因為棧是先進後出,因此需要倒序遍歷s。假設當前遍歷到s的pos位置,分為如下幾種情況 遇到數字0 9,將數字 不一定是個位數 獲取,...