LeetCode 224 基本計算器

2022-06-25 07:24:11 字數 916 閱讀 5171

實現乙個基本的計算器來計算乙個簡單的字串表示式s的值。

示例1:

輸入:s = "1 + 1"

輸出:2

示例2:

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

輸出:3

示例3:

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

輸出:23

這道題僅包含+-兩種運算子,不需要考慮運算子優先順序的問題。

加入給定乙個僅包含+-,不含括號的式子,那麼求解將變得十分簡單,而加上括號之後,我們需要考慮的是,乙個數字在整個式子裡應該是被加上還是被減去?(即這個數字的真正符號是?)

對任意乙個數字,我們假設該數字外面有n層括號包裹,那麼這個數字的正負性應當這樣考慮:記錄每層括號前的乙個運算子,以及該數字前的運算子,通過負負得正,判斷該數字的真正符號。

繼續思考,發現+並不改變乙個數字的正負性,我們需要記錄該數字的每層括號前的符號中,有幾個-

用乙個棧記錄每一層括號前的符號,**如下:

class solution 

else if(s[i] == '-')

else if(s[i] == '(')

else if(s[i] == ')')

else

ans += sign * num;}}

return ans;

}};

leetcode 224 基本計算器

題目 基本計算器 實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式可以包含左括號 右括號 加號 減號 非負整數和空格 示例1 輸入 1 1 輸出 2 示例2 輸入 2 1 2 輸出 3 示例3 輸入 1 4 5 2 3 6 8 輸出 23 說明 c include include cl...

leetcode 224 基本計算器

實現乙個基本的計算器來計算乙個簡單的字串表示式的值。字串表示式可以包含左括號 右括號 加號 減號 非負整數和空格 示例 1 輸入 1 1 輸出 2 示例 2 輸入 2 1 2 輸出 3 示例 3 輸入 1 4 5 2 3 6 8 輸出 23 採用雙棧法,設立乙個資料棧和乙個操作符棧,在遍歷字串的過程...

Leetcode 224基本計算器

邏輯先寫第三步再寫第二步,思考時要按照表示式順序先看數字再看右括號正常考慮,時間複雜度o n class solution intcalculate string s else 遇到數字 nums.push n 處理多位數等價寫法 while j s.size isdigit s j j j i c...