
👨💻博主正在持续更新关于LeetCode的习题中。 ❤️ 如果你觉得内容还不错,请多多点赞。 ⭐️ 如果你觉得对你有帮助,请多多收藏。(防止以后找不到了) 👨👩👧👦如果你想阅读更多的LeetCode习题讲解,请多多关注博主。

//基本计算器||——数组模拟栈
#include<iostream>
#include<vector>
#include<string>
#include<numeric>
using namespace std;
class Solution {
public:
int calculate(string s)
{
vector<int>stk;
char preSign='+';
int num=0;
int n=s.length();
for(int i=0;i<n;i++)
{
if(isdigit(s[i]))
{
num=num*10+int(s[i]-'0');
}
if(!isdigit(s[i])&&s[i]!=' '||i==n-1)
{
switch(preSign)
{
case '+':
stk.push_back(num);
break;
case '-':
stk.push_back(-num);
break;
case '*':
stk.back()*=num;
break;
default:
stk.back()/=num;
}
preSign=s[i];
num=0;
}
}
return accumulate(stk.begin(),stk.end(),0);
}
};
int main()
{
string s = "333*2+2-3";
Solution value;
int result = value.calculate(s);
cout << "计算器的计算结果是:" << result << endl;
return 0;
}输入:string s = “333*2+2-3”;


输出:665
vector<int>stk;
char preSign='+';
int num=0;
int(s[i]-'0')
if(isdigit(s[i]))
{
num=num*10+int(s[i]-'0');
}
stk.back()*=num;
stk.back()/=num;
#include<numeric>
return accumulate(stk.begin(),stk.end(),0);