class Solution {
public:
int calculate(string s) {
stack<int> sta;
char c = '+';
int num = 0;
for(int i = 0; i <= s.length(); i++){
if(isdigit(s[i])){
num = num * 10 + (s[i] - '0');
}
else if(isspace(s[i])){
continue;
}
else {
switch(c){
case '+':sta.push(num); break;
case '-':sta.push(-num); break;
case '*':num*= sta.top(); sta.pop(); sta.push(num);break;
case '/':num = sta.top()/num; sta.pop(); sta.push(num); break;
}
num = 0;
c = s[i];
}
}
int res = 0;
while(!sta.empty()){
res += sta.top();
sta.pop();
}
return res;
}
};
leetcode 计算器(不使用eval库函数)
最新推荐文章于 2024-07-08 21:32:26 发布