牛客竞赛算法入门题单打卡 I 牛牛与后缀表达式

链接:登录—专业IT笔试面试备考平台_牛客网
来源:牛客网
 

题目描述

给定牛牛一个后缀表达式s,计算它的结果,例如,1+1对应的后缀表达式为1#1#+,‘#’作为操作数的结束符号。

其中,表达式中只含有‘+’、’-‘、’*‘三种运算,不包含除法。

本题保证表达式一定合法,且计算过程和计算结果的绝对值一定不会超过101810^{18}1018

示例1

输入

复制"1#1#+"

"1#1#+"

返回值

复制2

2

说明

1#1#+这个后缀表达式表示的式子是1+1,结果为2 

示例2

输入

复制"12#3#+15#*"

"12#3#+15#*"

返回值

复制225

225

说明

12#3#+15#*这个后缀表达式表示的式子是(12+3)*15,结果为225 

备注:

1≤表达式中操作数≤1091\leq表达式中操作数\leq10^91≤表达式中操作数≤109

1≤表达式长度≤1061\leq表达式长度\leq10^61≤表达式长度≤106

思路

后缀表达式(逆波兰表达式)算法,在读取到操作符前将数字入栈,读取到操作符时,将栈中两数字出栈,先出栈的为右操作数,后出栈的为左操作数,两数字操作后的结果入栈,最后栈内剩下的值即为表达式的值

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 给定一个后缀表达式,返回它的结果
     * @param str string字符串 
     * @return long长整型
     */
    long long legalExp(string str) {
        	long long temp=0;
		stackst;
		long long a1,a2,len=str.size();
		for(int i=0;i

你可能感兴趣的:(牛客竞赛算法入门,算法)