题解:UVA12803 Arithmetic Expressions

· · 题解

前置知识:

eval 函数。

题目大意:

给你一个以字符串形式输入的表达式,请你转换出这个表达式的值并输出。这里是中缀转前缀。

思路:

Python:

我们可以直接调用 eval 函数,它的作用是将字符串作为函数的参数,从而直接计算出表达式的值。

C++:

其实做法很简单,我们需要准备数字栈,遇到数字就入栈,遇到字符就弹出栈顶的两个元素,来做运算即可。最后输出栈顶元素即可。

核心代码:

if(s[i]>='0'&&s[i]<='9'){
    sum=sum*10+s[i]-'0';//拼接
}
else{
    q.push(sum);//存储
}
while(!q2.empty()){
    int top1=q1.front();
    q1.pop();
    int top2=q1.front();
    q1.pop();
    q1.push(top1 ^ top2);//^这里指q2的front
}