Re: [閒聊] 每日leetcode

作者: sixB (6B)   2024-08-03 04:24:24
224.
小計算機parser
學康拍樂做的小作業都比這個複雜==
以前的hard真的都很純
意思到了
原本想說用stack
進進又退退的感覺不是很爽
後來想說建樹
全部都擺起來怕太大
沒有要選市長不用這種建樹吧
用同一套邏輯記state
邊走邊算 好像又有點像stack了
樹位邏輯
using ll = long long;
class Solution {
public:
int calculate(string s) {
ll res = 0;
stack<pair<ll, bool>> st;
bool type = 1; // false:'-', true:'+'
//<value, type>
ll cur = 0;
for(char c: s){
if(c == ' ') continue;
if(c == '(') {
st.push({res, type});
res = 0;
type = true;
}
else if(c == ')') {
cal(res, type, cur);
cur = res;
res = st.top().first;
type = st.top().second;
cal(res, type, cur);
st.pop();
}
else{
if(c == '-'){
cal(res, type, cur);
type = false;
}
else if(c == '+'){
cal(res, type, cur);
type = true;
}
else{
//digits
cur *= 10;
cur += (c - '0');
}
}
}
cal(res, type, cur);
return (int)res;
}
void cal(ll& res, bool& type, ll& cur){
if(type) res += cur;
else res -= cur;
type = true;
cur = 0;
//cout << res << '\n';
}
};
作者: digua (地瓜)   2024-08-03 06:37:00
大師

Links booklink

Contact Us: admin [ a t ] ucptt.com