leetcode - 227. 基本计算器 II
题目
代码
#include <iostream>
using namespace std;
int calculate(string s) {
int n = s.size();
vector<long> od;
vector<char> op;
long tn = 0, res = 0;
for(int i = 0; i < n; i++){
if('0' <= s[i] && s[i] <= '9'){
tn = tn * 10 + s[i] - '0';
}else if(s[i] != ' '){
od.push_back(tn);
op.push_back(s[i]);
tn = 0;
}
}
od.push_back(tn);
int s1 = od.size();
int s2 = op.size();
for(int i = 0; i < s2; i++){
if(op[i] == '*' || op[i] == '/'){
if(op[i] == '*'){
od[i] = od[i] * od[i+1];
}else{
od[i] = od[i] / od[i+1];
}
for(int j = i+1; j < s1 - 1; j++){
od[j] = od[j+1];
}
for(int k = i; k < s2 - 1; k++){
op[k] = op[k+1];
}
s1--;
s2--;
i--;
}
}
if(s1 == 1){
return od[0];
}
int i = 0;
while(i < s2){
if(op[i] == '+'){
od[i+1] = od[i] + od[i+1];
}else{
od[i+1] = od[i] - od[i+1];
}
res = od[i+1];
i++;
}
return res;
}
int main(){
string s;
int res;
cin>>s;
res = calculate(s);
cout<<res;
return 0;
}