字符串的表达式的算术运算(C++) LeetCode:224

该博客介绍如何用C++实现LeetCode的224题,即基本计算器,通过栈处理字符串表达式的加减运算。思路涉及栈的使用,具体步骤包括处理括号、数字和运算符,代码中详细展示了实现过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

224:基本计算器

  • 题目描述

实现一个基本的计算器来计算一个简单的字符串表达式的值。

字符串表达式可以包含左括号 ( ,右括号 ),加号 + ,减号 -,非负整数和空格 。
示例一:

输入: "1 + 1"
输出: 2

示例二:

输入: " 2-1 + 2 "
输出: 3

示例三:

输入: "(1+(4+5+2)-3)+(6+8)"
输出: 23

说明:

你可以假设所给定的表达式都是有效的。
请不要使用内置的库函数 eval。

思路

知识点:栈的使用

  1. 声明两个栈结构,一个栈存放数字,另一个栈存放操作符(’+’,’-’);
  2. 当字符串只是进行两个数相加减时,设定一个栈运算函数,将两个栈内的元素弹出进行运算,如字符串=“1+121”;
    在这里插入图片描述
  3. 遍历字符串(括号处理)
    3.1. 如果当前字符是数字字符,将其转化为数字,继续遍历下一个字符,一直到当前字符非数字字符为止 ,确定最终的数字,将其压入数字栈。
    3.2 如果当前字符是运算符字符,将其压入操作符栈,并更新标志位,使得下次数字压入数字栈时进行栈运算
    3.3 如果字符为左括号,更新标志位,使得下次数字压入数字栈时不发生栈运算
    3.3 如果遇到右括号,直接进行栈预算

代码实现

class Solution
{
   
public:
    static int calculate(string s) {
   
	stack<int> num_stack;//栈中存放字符转化后的数字
  	stack<char> op_stack;//栈中存放运算符
	int number = 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值