首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >讲解LeetCode第227题:基本计算器||(完整代码)

讲解LeetCode第227题:基本计算器||(完整代码)

作者头像
序属秋秋秋
发布2025-12-18 15:02:10
发布2025-12-18 15:02:10
480
举报

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


题目介绍

在这里插入图片描述
在这里插入图片描述

方法一:数组模拟栈

完整代码展示
代码语言:javascript
复制
//基本计算器||——数组模拟栈
#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

代码片段解释
片段一:
代码语言:javascript
复制
vector<int>stk;
char preSign='+';
int num=0;
在这里插入图片描述
在这里插入图片描述
片段二:
代码语言:javascript
复制
int(s[i]-'0')
在这里插入图片描述
在这里插入图片描述
片段三:
代码语言:javascript
复制
if(isdigit(s[i]))
{
   num=num*10+int(s[i]-'0');
}
在这里插入图片描述
在这里插入图片描述
片段四:
代码语言:javascript
复制
stk.back()*=num;
stk.back()/=num;
在这里插入图片描述
在这里插入图片描述
片段五:
代码语言:javascript
复制
#include<numeric>

return accumulate(stk.begin(),stk.end(),0);
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2024-10-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 题目介绍
  • 方法一:数组模拟栈
    • 完整代码展示
    • 核心原理演示
    • 代码片段解释
      • 片段一:
      • 片段二:
      • 片段三:
      • 片段四:
      • 片段五:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档