每天一道算法题(26)——输入字符串表达式求值

本文介绍了如何处理输入的带有运算符的字符串表达式,通过递归算法处理括号并求值。文章详细阐述了算法的思想,包括如何处理乘法和加减操作,以及如何处理括号内的表达式。最后提供了实现该算法的四个关键函数:getNum, calculate, getValue 和 process。算法具备处理多余空格和空白字符的能力。" 100026665,8394910,Flume HttpSource配置与异常处理指南,"['大数据', 'flume', 'java']
摘要由CSDN通过智能技术生成

题目: 

      输入字符串,求输出的值。输入的均为整形,要求包含运算符

         例如输入: "24*1 +(4+6)*2+ (4-3*2) *( 4+6-9+(11-3*4)*2 +2)* 10+ 20 -3* 2 *4 +2"

                输出结果:20

         要求:对于多余空格字符完好的鲁棒性,函数原型:void process(const char* input, int &output)

 

思想:

         1. 首先,介绍基本数值运算(不包含括号运算符)算法。例如计算“13+7*2*1-15-2*8+2”。先定义三个变量,整形left,right分别表示左,右操作数,定义bool变量flag。遍历字符串,初始为true。设定字符串指针为*str。 基本算法为左操作数记录当前结果,右操作数更新新的操作数。这里涉及到对下一个操作符号的试探,则四者者的变动为:


       分析:

                 (1)该算法不回溯,只一次性遍历一遍字符串</

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值