首页 > 其他分享 >中缀逻辑表达式转后缀逻辑表达式

中缀逻辑表达式转后缀逻辑表达式

时间:2023-04-01 12:04:59浏览次数:46  
标签:逻辑 中缀 else push stk 表达式

#include <bits/stdc++.h>
using namespace std;
/*
中缀逻辑表达式转后缀逻辑表达式

测试用例:
0&(0|1|0)

答案:
001|0|&
*/
unordered_map<char, int> h{{'|', 1}, {'&', 2}};
string s;
string t;
stack<char> stk;

int main() {
    cin >> s;
    for (int i = 0; i < s.size(); i++) {
        if (isdigit(s[i]) || isalpha(s[i]))
            t.push_back(s[i]);
        else if (s[i] == '(')
            stk.push(s[i]);
        else if (s[i] == ')') {
            while (stk.top() != '(') {
                t.push_back(stk.top());
                stk.pop();
            }
            stk.pop();
        } else {
            while (stk.size() && h[s[i]] <= h[stk.top()]) {
                t.push_back(stk.top());
                stk.pop();
            }
            stk.push(s[i]);
        }
    }
    while (stk.size()) {
        t.push_back(stk.top());
        stk.pop();
    }
    printf("%s", t.c_str());
    return 0;
}



标签:逻辑,中缀,else,push,stk,表达式
From: https://blog.51cto.com/u_3044148/6163449

相关文章

  • 中缀表达式转后缀表达式
    中缀表达式转后缀表达式一、中缀表达式和后缀表达式的区别中缀表达式就是我们通常认知中的表达式,比如\[1+((2+3)*4)-5\]这样的表达式虽然容易被人所理解,但是不容易被机器所识别,为此推出了后缀表达式。后缀表达式又被叫做逆波兰表达式,逆波兰表达式不需要被括号所识别,且容易被机......
  • 对电子逻辑知识的认知
    电子逻辑电路的数字设计通常用高低代表一和零体现实际电路。门电路能够用来构建任何组合数字逻辑的只有三种基本逻辑函数与或非这些函数的逻辑。与门(and):当且仅当所有输入为一时产生,输出1;或门(or):当有一个或多个输入为一时产生输出1。非门(not):通常称为反向器,它能产生一个与输入值......
  • 电子逻辑知识的认知
      逻辑学是一门成熟较早的学科。发展至今,它的内容不断丰富。经近现代逻辑学家的不懈探索,这一学科已从传统逻辑发展称为现代逻辑,在人们思维、论辩、科学研究等各个方面发挥着重要作用。我们所熟悉的电子计算机实际上就是以逻辑学为基础发展起来的。可以说,掌握逻辑学只是,具有较......
  • 电子逻辑认知
    电子元件基础有四层:一、半导体晶体管的开关特性                  二、逻辑门(与或非)                  三、中小规模集成电路实现的复杂逻辑器件:组合逻辑电路——全加器、译码/编译器、三态门等,时序逻......
  • 我对电子逻辑的认知
    有小,中,大三种集成电路。第一层:半导体晶体管的开关特性——模拟实现布尔逻辑。第二层:小规模集成电路实现基本逻辑功能——逻辑门。第三层:中小规模集成电路实现复杂逻辑器件。  1.组合逻辑电路:全加器,译码编码器,三态门。  2.时序逻辑电路:触发器。第四层:计算机cpu实现器......
  • Hangfire 定时任务设置某个时间区间每隔一定时间触发的Cron表达式
    Cron表达式Hangfire使用类似于Linux下的Cron表达式定义时间规则,Cron表达式由6或7个由空格分隔的时间字段组成。Cron表达式时间字段(从左到右依次为):位置时间域名允许值允许的特殊字符1秒0-59,-*/2分钟0-59,-*/3小时0-23,-*/4日期1-31......
  • 二、对电子逻辑知识的认识
        经过一周的学习,我学到了一些知识点:一、电子元件1.第一层半导体晶体管的开关特性----模拟实现布尔逻辑正逻辑:高电压表示1。负逻辑:低电压表示0。晶体管:放大作用 。2.第二层小规模集成电路实现的基本逻辑功能----逻辑门包括:与、或、非、与非、或非、同或、异......
  • 电子逻辑认知
    电子元件: 1.第一层:  半导体晶体管的开关特性------模拟实现布尔逻辑   --正逻辑:高电压表示(国际标准)  --负逻辑:高电压表示0         2.第二层 :  小规模集成电路实现的基本逻辑功能-------逻辑门:包括:与,或,非,与非,或非,同或,......
  • 常用API(Math,System,Runtime,Object,Objects,BigInteger,BigDecimal,正则表达式)
    常用API(Math,System,Runtime,Object,Objects,BigInteger,BigDecimal,正则表达式)多使用帮助文档类型取值范围和默认值Math类:​ 概念:帮助我们进行数学计算的工具类,里面的方法都是静态的,所以无需实例化这个类​ 常用方法:​ abs::获取绝对值 absExact:获取绝对值 rou......
  • 电子逻辑的认识
    电子元件第1层:半导体晶体管的开关特性-----模拟实验布尔逻辑.正逻辑:高电压表1(国际标准).负逻辑:高电压表0.第2层:小规模集成电路实现的基本逻辑功能--逻辑门:包括:与、或、非等第3层:中小规模集成电路实现的复杂逻辑器件.1)组成逻辑电路----全加器,译码/编译器,三态门.2......