算法笔记——左神进阶(例题)字符串加减乘除计算

这篇博客探讨了字符串中的加减乘除计算问题,重点在于处理括号及特殊边界条件。作者建议在面试时关注易错点,并通过积累特殊案例来提升解答效率。文章介绍了两种情况:无括号时利用栈处理运算,有括号时递归处理括号内的计算,最终返回计算结果和停止位置。

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

字符串加减乘除计算

经典例题,这题的3点说明是降低了一点难度,不然需要考虑有效性和溢出等状况。
tips:在笔试面试时,关注容易出错的地方和边界条件,在刷题的过程中需要将特殊情况进行标记,多积累特殊的情况,面试官询问对于算法如何检查之类的可以先回答对数器,同时需要回答需要关注的特殊情况和边界条件。

【题目】
在这里插入图片描述

【思路】
整个式子分为两种情况:

  1. 没有括号:新建一个栈,将数字和符号都放到栈中,如果顶端的符号是+或者-,则此时可以放入数字,如果顶端字符是或者/,则此时将最后放入的或/和符号下的数字取出,然后与即将放入的字符进行运算,运算结果放入到栈中。
  2. 存在括号:如果遇见了括号,则从括号的下一个位置开始计算,直到遇到右括号或者到了字符串结尾结束。中间过程不考虑空间复杂度可以考虑当存在左括号的时候允许其新建栈,如果此时没有括号了,则又变成了第一种情况,如果中间还存在括号,则又再次经历第二种情况,最后一定会返回到没有括号的情况。将括号内运算结果同样当做一个小步,此时保存到栈中。

需要的返回值:
3. 停止的位置
4. 停止位置计算的结果是多少。

【代码】

//主函数,主函数最后只关心最后计算的数值,其他不关心
public static int getValue(String str){
   
	return value(str.toCharArray(),0
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值