224. 基本計算器
實現乙個基本的計算器來計算乙個簡單的字串表示式s
的值。
先附上乙個大佬的做法,兩個棧乙個記錄數字,乙個記錄左括號前面的符號f,這樣當遇到右括號的時候直接將棧頂的值加上f*括號內的值,很簡便的做法
class solution
ans+=sign*num;
}else if(str[i]=='(')
else ans=st_num.pop()+ans*st_signs.pop();//右括號更新結果
}return ans;
}}
示例 1:
輸入:s = "1 + 1"示例 2:輸出:2
輸入:s = " 2-1 + 2 "
輸出:3
示例 3:
輸入:s = "(1+(4+5+2)-3)+(6+8)"
輸出:23
這道題wa了很多次,還有很多點沒有想到,導致**改的很亂。
主要的幾個測試點有
-(2+1)我基本上就是對幾個方法特判或者特殊處理下。-(-2+1)
(1-(6-7)+2)
12+15
主要思路先把空格去了,然後用兩個棧來維護算式情況,當遇到右括號兩個棧都應該退棧到左括號並計算括號裡面的
然後模擬就好了
class solution
for(;i < len; i++)
temp = temp * 10 + s[j] - '0';
}if(sta_int.size()==0)
sta_int.push(temp*fz);
else sta_int.push(temp);
if(j==len) break;
else i = j - 1;
}else
if(s[i]=='-'&&sta_int.size()==0)
if(s[i]==')')
if(fuhao=='+') sta_int.top() = sign * sta_int.top() + num;
if(fuhao=='-') sta_int.top() = sign * sta_int.top() - num;
}sta_char.pop();
}else sta_char.push(s[i]);}}
while(sta_char.size())
if(fuhao=='+') sta_int.top() = sign * sta_int.top() + num;
if(fuhao=='-') sta_int.top() = sign * sta_int.top() - num;
}return sta_int.top()*ffff;
}};
數值。 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...