Advertisement

第26天每日一算法题——解析字符串中的数学表达式

阅读量:

题目:

对给定的字符串进行处理,计算其运算结果。所有输入数据均为整型,并且必须包含运算符。

例如输入: "241 +(4+6)2+ (4-32) ( 4+6-9+(11-34)2 +2) 10+ 20 -3 2 *4 +2"

输出结果:20

要求:程序需具备对多余空格字符的容错能力,函数原型为:void process(const char* input, int &output)

思想:

1. 首先,阐述基础数值计算(不涉及括号运算符)的实现方式。例如,对表达式“13+721-15-28+2”进行求解。初始时,需设定两个整型变量left和right,分别用于存储左侧与右侧的操作数,并定义一个布尔型变量flag。在遍历字符串的过程中,初始状态设为true,并将字符串指针指向str。该算法的核心在于,左侧操作数用于保存当前计算结果,而右侧操作数则用于更新新出现的操作数。在此过程中,需要对下一个运算符号进行判断,从而引发四个变量的相应变化:

分析:

(1)该算法在处理过程中不会进行回溯操作,而是仅对字符

全部评论 (0)

还没有任何评论哟~