给定一个包含正整数、加(+)、减(-)、乘(*)、除(/)的算数表达式(括号除外),计算其结果。
表达式仅包含非负整数,+, - ,*,/ 四种运算符和空格 。 整数除法仅保留整数部分。
根据逆波兰表达式的方式,计算:
用sign保留当前数字前的符号;
注意最后一个数字的处理;
class Solution {
public:
int calculate(string s) {
int num=0;
vector<int>nums;
char sign='+';
for(int i=0;i<s.size();i++){
char c=s[i];
if(isdigit(c)){
num=num*10+(c-'0');
}
if(!isdigit(c)&&c!=' '||i==s.size()-1){ //考虑处理最后一个数字
switch(sign){
case '+':
nums.push_back(num);
break;
case '-':
nums.push_back(-num);
break;
case '*':
nums[nums.size()-1]*=num;
break;
case '/':
nums[nums.size()-1]/=num;
break;
}
num=0;
sign=c;
}
}
int rst=0;
for(auto x:nums){
rst+=x;
}
return rst;
}
};
如果觉得可以,点赞➕收藏